我正在尝试将有向图转换为以CSR格式存储的无向图。当插入代码正常工作时。但是然后迭代集合的向量,它给出一个段错误。
std::vector<std::set<idx_t>> srcVDst(nnodes);
for (idx_t src = 0; src < nnodes; src++) {
idx_t edge_begin = p_row_start[src];
idx_t edge_end = p_row_start[src + 1];
for (idx_t edge = edge_begin; edge < edge_end; edge++) {
idx_t dst = p_edge_dst[edge];
srcVDst[src].insert(dst);
srcVDst[dst].insert(src);
}
}
// omit for realloc p_edge_dst and p_row_start
nedges = 0;
for (idx_t src = 0; src < nnodes; src++) {
std::set<idx_t> &VDst = srcVDst[src];
for (idx_t dst:VDst) { // HERE IS THE SEGFAULT
p_edge_dst[nedges++] = dst;
}
p_row_start[src + 1] = nedges;
}
当我尝试跟踪IDE中的错误时,它会停在此处
_Self&
operator++() _GLIBCXX_NOEXCEPT
{
_M_node = _Rb_tree_increment(_M_node);
return *this;
}
我对C ++很新。我一直在写Java。我只是想知道,C ++中的迭代器是无状态的吗?为什么给我这样的错?谢谢。