我目前在使用C++中的map<int,int>
。我可以轻松地检查键是否存在,但是是否有一种有效的方法来检索具有特定值的键呢?我的目的是获取所有具有给定值的元素,然后更新它们的值。
我目前在使用C++中的map<int,int>
。我可以轻松地检查键是否存在,但是是否有一种有效的方法来检索具有特定值的键呢?我的目的是获取所有具有给定值的元素,然后更新它们的值。
现在使用c++11及以上版本很容易。
请尝试以下示例。
//DECLARE A MAP
std::map<int, int> testmap;
//SAMPLE DATA
testmap.insert(std::make_pair(1, 10));
testmap.insert(std::make_pair(2, 20));
testmap.insert(std::make_pair(3, 30));
testmap.insert(std::make_pair(4, 20));
//ELEMENTS WITH VALUE TO BE FOUND
int value = 20;
//RESULTS
std::map<int,int> keysMatching;
//ONE STEP TO FIND ALL MATCHING MAP ELEMENTS
std::copy_if(testmap.begin(), testmap.end(), std::inserter(keysMatching, keysMatching.end()), [value](const auto& v) {return v.second == value; });