有一个从int映射到string的map,如何判断一个字符串是在mapz中,并告诉我该string的键值,不用循环遍历
时间: 2024-01-22 08:21:10 浏览: 98
java计算给定字符串中出现次数最多的字母和该字母出现次数的方法
5星 · 资源好评率100%
可以使用反向映射的方式,即将原本映射的键值对反过来,变成将字符串作为键,整数作为值。然后可以使用`std::map::find`函数来查找指定的字符串是否存在于map中,如果存在则返回一个迭代器,通过迭代器可以获取到该字符串对应的整数值。
示例代码如下:
```c++
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> intToStringMap = {{1, "hello"}, {2, "world"}, {3, "!"}};
std::map<std::string, int> stringToIntMap;
// 反向映射
for (const auto& kv : intToStringMap) {
stringToIntMap[kv.second] = kv.first;
}
// 查找字符串并获取整数值
std::string str = "world";
auto it = stringToIntMap.find(str);
if (it != stringToIntMap.end()) {
std::cout << "key: " << it->second << std::endl;
} else {
std::cout << "not found" << std::endl;
}
return 0;
}
```
输出:
```
key: 2
```
阅读全文