-8
我一直在嘗試使用向量,但是無論何時我全局聲明它們,我都會遇到分段錯誤(核心轉儲)錯誤。但是,當我在聲明的矢量上指定大小時,錯誤不再發生。如果向量中發生動態分配,那麼爲什麼需要給出一個大小以及這個錯誤是什麼?請有人解釋一下。聲明向量時出現分段錯誤(核心轉儲)
的代碼用於執行使用矢量鄰接表(圖)的:
#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;
}
爲什麼當vector是一個'C++'類時,你將它標記爲'C'?另外,請顯示您的代碼。 – PaulMcKenzie
你的問題是「我寫了一些代碼,它不起作用,請解釋一下」。沒有代碼 - >沒有幫助! – John3136