我一直在尝试使用向量,但每当我在全局声明它们时,我都会遇到分段错误(核心转储)错误。但是当我在我声明的向量上指定一个大小时,不再出现错误。如果在向量中发生动态分配,那么为什么需要给出大小以及这个错误是什么?请有人解释一下。
该代码用于使用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;
}
答案 0 :(得分:0)
std::vector
不会自动调整大小。您需要使用resize
手动调整大小。