我是C ++的新手,想知道如何最好地重组一个数组中的数据,然后将其放入另一个数组中。
可以说我们有一个数组,如下所示,其中A列是1-5之间的数字,B列是随机整数。
A B
5 12
1 11
2 7
2 3
3 1
5 20
4 4
3 18
我们将如何处理数据,以便将{1,2,3,4,5}都在A列中至少出现一次,从而对A列中的重复数字求和。
即看起来像
A B(aggregate)
1 11
2 10
3 19
4 4
5 32
我认为代码将类似于:
double P[7][2]= {//first table above}
double Q[5][2]= {0};
for(i=0; i<7; i++){
for(j=0;j<5;j++){
if P[i][1] = j{
Q[j][2]=+P[i][3]; //is this how you add an element
}
}
}
答案 0 :(得分:1)
您可以通过使用map<int, int>
容器来获得所需的结果,如下所示:
#include <iostream>
#include <map>
#include <vector>
using namespace std;
map<int, int> m;
vector<int> A = { 5, 1, 2, 2, 3, 5, 4, 3 };
vector<int> B = { 12, 11, 7, 3, 1, 20, 4, 18 };
int main()
{
if (A.size() != B.size()) return 1; //error
for (int i = 0; i < A.size(); i++) m[A[i]] += B[i];
// print results
for (const auto &p : m)
cout << "m[" << p.first << "] = " << p.second << '\n';
}
更多信息,请访问:std::map