使用C ++中的向量(2D向量)向量的邻接列表表示

时间:2017-01-08 06:07:58

标签: c++ vector

我们可以使用像vector<int> adj[10];这样的一维向量填充BFS中的邻接列表,我们可以按如下方式填充该向量:

main(){
int x,y,nodes,edges;
cin>>nodes>>edges;
for(int i=0;i<edges;i++){
cin>>x>>y;
adj[x].push_back(y); //Insert y in adjacency list of x
}
}

现在我们如何使用2D矢量(或矢量矢量)来填充邻接列表而不是1D矢量 2D矢量可以像vector<vector<int> >g; 那么我们如何填充2D向量来构建邻接列表呢?

1 个答案:

答案 0 :(得分:1)

假设,x的最大值可以是 n 首先,您必须使用 n 数量的1D向量初始化2D向量 然后,您可以像在示例中那样执行操作。

vector<vector<int> >g;
for(int i = 0; i<n; i++)
{
    vector<int>v;
    g.push_back(v);
}

g[0].push_back(3);
g[1].push_back(5);
cout<<g[0][0]<<endl;
cout<<g[1][0]<<endl;

或者您可以在声明时初始化矢量。

vector<vector<int> >g(n);

g[0].push_back(3);
g[1].push_back(5);
cout<<g[0][0]<<endl;
cout<<g[1][0]<<endl;