声明向量时出现分段错误(核心转储)
问题描述:
我一直在尝试使用向量,但是无论何时我全局声明它们,我都会遇到分段错误(核心转储)错误。但是,当我在声明的矢量上指定大小时,错误不再发生。如果向量中发生动态分配,那么为什么需要给出一个大小以及这个错误是什么?请有人解释一下。声明向量时出现分段错误(核心转储)
的代码用于执行使用矢量邻接表(图)的:
#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;
}
答
std::vector
不会自动调整,当你索引它。您需要使用resize
手动调整它的大小。
为什么当vector是一个'C++'类时,你将它标记为'C'?另外,请显示您的代码。 – PaulMcKenzie
你的问题是“我写了一些代码,它不起作用,请解释一下”。没有代码 - >没有帮助! – John3136