【发布时间】:2016-11-03 16:09:53
【问题描述】:
我可以在以下类型的向量中获取输入并显示输出:
vector<pair<int,int>>
但是类型:
vector<vector<pair<int,int>>>
让我很困惑。 我需要这种数据类型来存储我打算进行深度优先搜索遍历的图信息。
我尝试编译以下代码。但是编译后,程序崩溃了。如果有人更正此代码,我将不胜感激。
#include<iostream>
#include<stdio.h>
#include<vector>
#include<utility>
using namespace std;
typedef pair<int,int> ii;
typedef vector<ii> vii;
typedef vector<vii> vvii;
typedef vector<int> vi;
vvii AdjList;
int main()
{
ii val;
val.first=4,val.second=10;
AdjList[0].push_back(val);
cout<<AdjList[0][0].first;
return 0;
}
【问题讨论】:
-
请记住,
AdjList以 empty 开头。任何对它的索引,甚至索引0,都超出了范围。您需要首先将向量推回其中(即您的类型别名vii)。 -
[OT] 使用
ii、vii、vvii和vi作为类型名称,恕我直言,这不是一个好主意。使代码很难弄清楚。 -
@Someprogrammerdude :这是一个答案,而不是评论。
-
@Someprogrammerdude 谢谢老兄!你的想法奏效了。 :) 但是有什么方法可以直接将值推送到嵌套向量中?
-
@NathanOliver 我使用这些 typedef 使代码看起来紧凑。但是,会记住你的话。