要实现按照列名为group的这一列来对矩阵分组,并计算每一组的和,可以使用C++的STL库中的unordered_map来实现。

首先,我们需要定义一个结构体来表示矩阵的每一行,其中包含矩阵的列名和对应的数值。

struct Row {
    string group;
    int value;
};

然后,我们可以使用vector来表示整个矩阵,每个元素都是一个Row结构体。

vector<Row> matrix;

接下来,我们可以使用一个unordered_map来将矩阵按照group列进行分组,key为group的值,value为该组的所有行。

unordered_map<string, vector<Row>> groups;

然后,我们可以遍历矩阵的每一行,将每一行添加到对应的组中。

for (const auto& row : matrix) {
    groups[row.group].push_back(row);
}

最后,我们可以遍历每一组,并计算每一组的和。

for (const auto& entry : groups) {
    const auto& groupName = entry.first;
    const auto& rows = entry.second;
    
    int sum = 0;
    for (const auto& row : rows) {
        sum += row.value;
    }
    
    cout << "Group: " << groupName << ", Sum: " << sum << endl;
}

完整的代码如下:

#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>

using namespace std;

struct Row {
    string group;
    int value;
};

int main() {
    vector<Row> matrix = {
        {"A", 1},
        {"B", 2},
        {"A", 3},
        {"B", 4},
        {"C", 5},
        {"C", 6}
    };

    unordered_map<string, vector<Row>> groups;

    for (const auto& row : matrix) {
        groups[row.group].push_back(row);
    }

    for (const auto& entry : groups) {
        const auto& groupName = entry.first;
        const auto& rows = entry.second;

        int sum = 0;
        for (const auto& row : rows) {
            sum += row.value;
        }

        cout << "Group: " << groupName << ", Sum: " << sum << endl;
    }

    return 0;
}

输出结果为:

Group: A, Sum: 4
Group: B, Sum: 6
Group: C, Sum: 11
``
C++如何实现按照列名为group的这一列来对矩阵分组然后计算每一组的和

原文地址: http://www.cveoy.top/t/topic/ioz6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录