>) 按pair的第一个元素搜索并更新第二个元素值,c++,algorithm,c++14,c++17"/>

首页 > 解决方案 > 对的排序向量 (std::vector>) 按pair的第一个元素搜索并更新第二个元素值

问题描述

我有一个成对向量 (std::vector<pair<int, int>>),按对中的第一个排序。我想通过搜索对的第一个值来更新对的第二个值。

vector<pair<int,int>> v = { {1, 5}, {4, 26}, {5, 3}, {7, 13}, {12, 43}, {17, 31} };

我想将该对的第二个值更新为 27,它的第一个值为 12。

// Expected v
v = { {1, 5}, {4, 26}, {5, 3}, {7, 13}, {12, 27}, {17, 31} }

请记住,向量已经按 pair 的第一个元素排序。

标签: c++algorithmc++14c++17

解决方案


使用 std::map

std::map<int, int> mymap;
mymap = { {1, 5}, {4, 26}, {5, 3}, {7, 13}, {12, 27}, {17, 31} };
int newValue = 5;
mymap.at(12) = newValue; //update the value 27 here
std::cout << mymap.at(12) << std::endl; 

请注意,如果地图中缺少请求的元素,该at函数将抛出一个。out of range exception此外,就像您的矢量一样,此地图已排序。


推荐阅读