目录
本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。
一、算法概述
类似下图所示,计算第一列中1或2对应的最大值。
二、代码实现
1、计算最值
cpp
#include <map>
#include <vector>
#include <iostream>
int main()
{
// 示例数据
std::vector<std::pair<int, int>> data = { {1, 100}, {1, 101}, {1, 102}, {2, 100}, {2, 101}, {2, 102} };
// 使用std::map来存储每个键的最大值
std::map<int, int> maxValues;
// 迭代数据
for (const auto& pair : data)
{
// 如果这个键还没有在map中,或者当前值大于map中存储的值,更新它
if (maxValues.find(pair.first) == maxValues.end() || pair.second > maxValues[pair.first])
{
maxValues[pair.first] = pair.second;
}
}
// 输出结果
for (const auto& maxPair : maxValues)
{
std::cout << "Column1 value " << maxPair.first << " has a maximum Column2 value of " << maxPair.second << std::endl;
}
return 0;
}
2、计算最值及其索引
cpp
#include <map>
#include <vector>
#include <iostream>
int main()
{
// 示例数据,每个pair是{第一列的值, 第二列的值}
std::vector<std::pair<int, int>> data = { {1, 100}, {1, 101}, {1, 102}, {2, 100}, {2, 101}, {2, 102} };
// 使用std::map来存储每个键的最大值的索引
std::map<int, int> maxIndices;
// 使用std::map来存储每个键的当前最大值
std::map<int, int> maxValues;
// 迭代数据,i 是行数索引
for (int i = 0; i < data.size(); ++i)
{
const auto& pair = data[i];
// 检查是否需要更新最大值和行数索引
if (maxValues.find(pair.first) == maxValues.end() || pair.second > maxValues[pair.first])
{
maxValues[pair.first] = pair.second;
maxIndices[pair.first] = i; // 更新行数索引
}
}
// 输出结果
for (const auto& maxIndex : maxIndices)
{
std::cout << "Column1 value " << maxIndex.first
<< " has a maximum Column2 value in row " << maxIndex.second << std::endl;
}
return 0;
}
三、结果展示
cpp
Column1 value 1 has a maximum Column2 value of 102
Column1 value 2 has a maximum Column2 value of 102
Column1 value 1 has a maximum Column2 value in row 2
Column1 value 2 has a maximum Column2 value in row 5