map获取所有value为a的key
时间: 2024-06-12 16:08:56 浏览: 24
要获取所有value为"a"的key,可以使用以下方法:
1. 遍历map的所有元素,通过判断value是否为"a",将满足条件的key存入一个新的容器中。
2. 使用std::find_if函数结合lambda表达式来查找满足条件的key。
示例代码如下:
```cpp
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
int main() {
std::map<int, std::string> myMap;
myMap.insert(std::make_pair(1, "a"));
myMap.insert(std::make_pair(2, "b"));
myMap.insert(std::make_pair(3, "a"));
myMap.insert(std::make_pair(4, "c"));
// 方法一:遍历map的所有元素
std::vector<int> keyVector;
for (const auto& pair : myMap) {
if (pair.second == "a") {
keyVector.push_back(pair.first);
}
}
// 方法二:使用std::find_if函数结合lambda表达式
std::vector<int> keyVector2;
auto it = std::find_if(myMap.begin(), myMap.end(), [](const auto& pair) {
return pair.second == "a";
});
while (it != myMap.end()) {
keyVector2.push_back(it->first);
it = std::find_if(std::next(it), myMap.end(), [](const auto& pair) {
return pair.second == "a";
});
}
// 输出结果
std::cout << "方法一获取到的key为:";
for (const auto& key : keyVector) {
std::cout << key << " ";
}
std::cout << std::endl;
std::cout << "方法二获取到的key为:";
for (const auto& key : keyVector2) {
std::cout << key << " ";
}
std::cout << std::endl;
return 0;
}
```