当迭代矢量集时,Segfault

时间:2018-05-08 15:13:30

标签: c++ containers

我正在尝试将有向图转换为以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 ++中的迭代器是无状态的吗?为什么给我这样的错?谢谢。

0 个答案:

没有答案