打印向量的元素
Printing the elements of vector
在下面的代码中,我有一个二维向量,在向量的每个索引中,每对包含 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
}
}
你似乎对你的二维数组结构感到困惑(我不得不承认,我也有点困惑你为什么使用那样的东西)。这个:
aye[a]
是数组的第(a+1)个元素,是向量,则
aye[a][i]
是该向量中的第 (i+1) 个元素,它是一对并且
aye[a][i].first
aye[a][i].second
分别是该对的 first/second 个条目。
但是,我怀疑您是否真的需要一对向量数组,尤其是当您似乎忽略了其余代码中的一个维度时。
您似乎试图打印您刚刚添加到 vector
的元素来执行此操作,我建议使用 vector::back
。你可以用这样的东西替换你的两条非工作线:
cout << aye[a].back().first << ' ' << aye[a].back().second;
无论您对此结构的意图如何,a
的输入值都会对您的设计构成威胁:
- 没有检查你是否落在 0 到 100 之间
- 你在知道
n
之前分配了 101 个元素,这意味着 101 - n
这些元素被浪费了。
在这种情况下,我认为对您的第一个维度使用 map
会是一个更好的计划;所以你的结构看起来像:
map<int, vector<pair<int, string>>> aye;
不需要对您的代码进行进一步的更改,但是无论 n
大于还是小于 101,您只需分配 n
vector<pair<int, string>>
s。
在下面的代码中,我有一个二维向量,在向量的每个索引中,每对包含 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
}
}
你似乎对你的二维数组结构感到困惑(我不得不承认,我也有点困惑你为什么使用那样的东西)。这个:
aye[a]
是数组的第(a+1)个元素,是向量,则
aye[a][i]
是该向量中的第 (i+1) 个元素,它是一对并且
aye[a][i].first
aye[a][i].second
分别是该对的 first/second 个条目。
但是,我怀疑您是否真的需要一对向量数组,尤其是当您似乎忽略了其余代码中的一个维度时。
您似乎试图打印您刚刚添加到 vector
的元素来执行此操作,我建议使用 vector::back
。你可以用这样的东西替换你的两条非工作线:
cout << aye[a].back().first << ' ' << aye[a].back().second;
无论您对此结构的意图如何,a
的输入值都会对您的设计构成威胁:
- 没有检查你是否落在 0 到 100 之间
- 你在知道
n
之前分配了 101 个元素,这意味着101 - n
这些元素被浪费了。
在这种情况下,我认为对您的第一个维度使用 map
会是一个更好的计划;所以你的结构看起来像:
map<int, vector<pair<int, string>>> aye;
不需要对您的代码进行进一步的更改,但是无论 n
大于还是小于 101,您只需分配 n
vector<pair<int, string>>
s。