如何将两个不同输入行中的相应元素配对,以在C++中形成一个成对数组?
例如。输入:
0 1 2 3 4
5 6 7 8 9
output = [{0,5} {1,6} {2,7} {3,8} {4,9}]
编辑:输入由用户通过stdin提供,而不是以两个不同数组的形式提供。我想直接以成对数组的形式存储这个输入,而不需要先创建2个数组,然后再进行成对。
编辑2:我只是想避免为中间步骤使用任何额外的空间。我尝试了以下操作,但没有给出正确的输出。
vector<pair<int, int>> pairs;
for (int i = 0; i < n; i++) {
cin >> k;
pairs.push_back({k, 0});
}
for (int i = 0; i < n; i++) {
cin >> k;
pairs[i] = {pairs[i].first, k};
}
TIA。
重新尝试时,应该在第二个循环中更新对,而不是替换它。
vector<pair<int, int>> pairs;
for (int i = 0; i < n; i++) {
cin >> k;
pairs.emplace_back(k, 0);
}
for (int i = 0; i < n; i++) {
cin >> pairs[i].second;
}
这是一个修改后的答案,因为问题发生了很大变化
如果大小已知,则从一开始就创建具有正确大小的结果vector<pair<int, int>>
,然后使用两个基于范围的for循环和结构化绑定来填充它。
std::vector<std::pair<int, int>> res(number_of_pairs);
for(auto&[a, b] : res) if(!(std::cin >> a)) return 1;
for(auto&[a, b] : res) if(!(std::cin >> b)) return 1;