打印矢量元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打印矢量元素相关的知识,希望对你有一定的参考价值。

在下面的代码中,我有一个2D向量,在每个向量索引中,每对包含int和string。我正在尝试在获取向量中的值后访问每个元素。建议将非常感谢。

 #include <bits/stdc++.h>
 using namespace std;
 vector<pair<int,string>> aye[101];

int main()
{ int n,m,i,a,b;
  string x;
cin >> n >> m;
for (int i = 1; i <= n; ++i)
{
    cin >> x;
    cin >> a >> b;
    aye[a].push_back(make_pair(-b,x));
    cout<<aye[a].first<<aye[a].second;//this is not working
    cout<<aye[a][0]<<aye[a][1]<<endl;//this is not working

 }
}
答案

您似乎对您的2D阵列结构感到困惑(我不得不承认,为什么您使用类似的东西我也有点困惑)。这个:

aye[a]

然后是数组的第(a + 1)个元素,它是一个向量

aye[a][i]

是该向量中的第(i + 1)个元素,它是一对和

aye[a][i].first
aye[a][i].second

是该对的第一个/第二个条目。

但是,我怀疑你真的需要一对双向量,特别是你似乎忽略了其余代码中的一个维度。

另一答案

您似乎正在尝试打印刚刚添加到vector的元素来执行此操作,我建议使用vector::back。你可以用这样的东西替换你的两条非工作线:

cout << aye[a].back().first << ' ' << aye[a].back().second;

Live Example


无论您对此结构的意图是什么,a的输入值都会对您的设计构成威胁:

  1. 没有检查看到你的跌倒在0到100之间
  2. 你甚至在知道n之前就分配了101个元素,这意味着这些元素的101 - n被浪费了。

在这种情况下,我相信使用map作为你的第一个维度将是一个更好的计划;所以你的结构看起来像:

map<int, vector<pair<int, string>>> aye;

不需要对您的代码进行进一步更改,但是您只会分配n vector<pair<int, string>>s n是大于还是小于101。

以上是关于打印矢量元素的主要内容,如果未能解决你的问题,请参考以下文章

为什么不打印矢量元素?

如何打印成对矢量数组的元素?

使用自动变量打印矢量的内容

argparse 代码片段只打印部分日志

如何将打印在控制台上的值存储为矢量?

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情