如果您有一个std :: map,它需要一个字符串和一个整数。
std::map<std::string, int> exampleMap;
如果您具有正确的int,有什么方法可以打印字符串?
假设我在地图中插入了字符串“ hello”和int 0:
exampleMap.insert(std::make_pair("hello", 0));
要打印0,我们可以使用:
exampleMap.find('hello')->second;
有什么方法可以打印“ hello”字符串?
答案 0 :(得分:2)
您可以按顺序遍历地图中的所有条目,直到找到具有以下值的条目:
for (auto &it : exampleMap)
{
if (it.second == value)
return it.first;
}
尽管您需要决定如果有多个具有相同int值的条目该怎么办,以及如果没有找到int怎么办。
答案 1 :(得分:1)
假设我在地图中插入了字符串“ hello”和int 0:
exampleMap.insert(std::make_pair("hello", 0));
有什么方法可以打印“ hello”字符串?
您需要进行迭代以找到具有期望值的项以打印密钥
#include <map>
#include <string>
#include <iostream>
int main()
{
std::map<std::string, int> exampleMap;
exampleMap.insert(std::make_pair("hello", 0));
exampleMap.insert(std::make_pair("how", 1));
exampleMap.insert(std::make_pair("are", 2));
exampleMap.insert(std::make_pair("you", 0));
int expected = 0;
for (std::map<std::string, int>::const_iterator it = exampleMap.begin();
it != exampleMap.end();
++it) {
if (it->second == expected)
std::cout << it->first << std::endl;
}
}
编译和执行:
pi@raspberrypi:/tmp $ g++ -pedantic -Wall -Wextra m.cc
pi@raspberrypi:/tmp $ ./a.out
hello
you
pi@raspberrypi:/tmp $
答案 2 :(得分:1)
您有几种选择...
选择哪一个取决于您需要两次查找的频率。如果很少,我会使用转换功能。如果不是罕见的话,我会使用双向容器。