操纵数组

时间:2019-03-02 17:09:22

标签: c++ arrays

我是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 
                }
        }
    }

1 个答案:

答案 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