声明向量时的分段错误(核心转储)

时间:2016-05-16 01:17:01

标签: c++ vector stl

我一直在尝试使用向量,但每当我在全局声明它们时,我都会遇到分段错误(核心转储)错误。但是当我在我声明的向量上指定一个大小时,不再出现错误。如果在向量中发生动态分配,那么为什么需要给出大小以及这个错误是什么?请有人解释一下。

该代码用于使用vector:

实现邻接列表(图形)
#include <iostream>
#include <vector>
using namespace std;
typedef vector< int > vi;
typedef vector< vi > vii;
vii adjlist;
int main()
{
      int n,m; // no. of vertices and no. of edges
      cin>>n>>m;
      for(int i =0;i<m;i++)
       {
          int p,q;
          cin>>p>>q;
          adjlist[p].push_back(q);
          adjlist[q].push_back(p);
        }
       for(int i =0;i<n;i++)
       {
            cout<<i;
            for(int j =0; j< (int)adjlist[i].size();++i)
             {
                      cout<<"_>"<<adjlist[i][j];
              }
            cout<<endl;
        }
   return 0;
  }

1 个答案:

答案 0 :(得分:0)

索引时,

std::vector不会自动调整大小。您需要使用resize手动调整大小。