使用vector<vector<int>> c++对二维矩阵的和进行排序可以按照以下步骤进行:
以下是一个示例代码:
#include <iostream>
#include <vector>
#include <algorithm>
bool compare(const std::pair<int, int>& a, const std::pair<int, int>& b) {
return a.first > b.first; // 按照和的大小进行降序排序
}
std::vector<std::vector<int>> sortMatrixBySum(std::vector<std::vector<int>>& matrix) {
std::vector<int> rowSums;
std::vector<std::pair<int, int>> sumIndexPairs;
// 计算每一行的和,并存储在rowSums中
for (const auto& row : matrix) {
int sum = 0;
for (const auto& num : row) {
sum += num;
}
rowSums.push_back(sum);
}
// 构建和与索引的对,并存储在sumIndexPairs中
for (int i = 0; i < rowSums.size(); i++) {
sumIndexPairs.push_back(std::make_pair(rowSums[i], i));
}
// 按照和的大小进行排序
std::sort(sumIndexPairs.begin(), sumIndexPairs.end(), compare);
std::vector<std::vector<int>> sortedMatrix;
// 根据索引对的顺序,将matrix中对应的行插入sortedMatrix中
for (const auto& pair : sumIndexPairs) {
sortedMatrix.push_back(matrix[pair.second]);
}
return sortedMatrix;
}
int main() {
std::vector<std::vector<int>> matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
std::vector<std::vector<int>> sortedMatrix = sortMatrixBySum(matrix);
// 输出排序后的矩阵
for (const auto& row : sortedMatrix) {
for (const auto& num : row) {
std::cout << num << " ";
}
std::cout << std::endl;
}
return 0;
}
这段代码使用了vector<vector<int>>来表示二维矩阵,计算每一行的和,并将和与索引构建成pair对象,然后按照和的大小进行排序,最后根据排序后的索引顺序重新构建矩阵。这样就实现了对二维矩阵的和进行排序的功能。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云