C++ 分段错误 - 具有集合的结构列表



>我有一个结构定义如下:

struct node {
int index;
std::set<StringRef> set1;
std::set<StringRef> set2;
std::set<StringRef> set3;
std::set<StringRef> set4;
};  

然后,我将循环访问定义如下node List

 std::list<node> my_table;

我现在正在循环浏览此列表并访问set1set2,但这会导致分段错误。

for (std::list<liveness_node>::iterator it = liveness_table.end(); it != liveness_table.begin(); --it) {
            std::set<StringRef> in_temp = it->set1;
            std::set<StringRef> out_temp = it->set2;
}

您正在取消引用end迭代器。 你应该使用反向迭代器

for (auto it = liveness_table.rbegin(); it != liveness_table.rend(); ++it)

以相反的顺序遍历列表。

for (std::list<liveness_node>::iterator it = liveness_table.end(); it != liveness_table.begin(); --it)

您正在尝试访问 liveness_table.end()end()返回最后一个元素 + 1,则不允许取消引用并使用 end() 。相反,请使用反向迭代器:

for (std::list<liveness_node>::reverse_iterator it = liveness_table.rbegin(); it != liveness_table.rend(); ++it)

相关内容

  • 没有找到相关文章

最新更新