【问题标题】:How to take input and show output in vector<vector<pair<int,int>>> in C++?如何在 C++ 中的 vector<vector<pair<int,int>>> 中获取输入并显示输出?
【发布时间】: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;
}

【问题讨论】:

  • 请记住,AdjListempty 开头。任何对它的索引,甚至索引0,都超出了范围。您需要首先将向量推回其中(即您的类型别名vii)。
  • [OT] 使用iiviivviivi 作为类型名称,恕我直言,这不是一个好主意。使代码很难弄清楚。
  • @Someprogrammerdude :这是一个答案,而不是评论。
  • @Someprogrammerdude 谢谢老兄!你的想法奏效了。 :) 但是有什么方法可以直接将值推送到嵌套向量中?
  • @NathanOliver 我使用这些 typedef 使代码看起来紧凑。但是,会记住你的话。

标签: c++ vector stl


【解决方案1】:

正确代码:

#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;
vvii AdjList(1000);


int main()
{
    ii val;
    val.first=4,val.second=10;
    AdjList[0].push_back(val);
    cout<<AdjList[0][0].first;
    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多