map.find(var)未返回正确的值

时间:2015-06-14 08:28:20

标签: c++

示例代码为:

map<char* , int> map;
map["Privilege"] = 1;

char* code[]="Privilege";

val = map.find(code); // returns map.end()
val = map.find("Privilege"); // returns correct value

我需要在变量键的基础上找到地图中的值:
val = map.find(code);

  

它正在返回map.end()

请提出建议

3 个答案:

答案 0 :(得分:1)

您在地图中存储角色指针,而不是字符串。 map.find比较了两个指针并发现它们不相等。

只需使用map<string, int>

答案 1 :(得分:1)

使用std :: string而不是char * 由于您要保存字符串值,而不是其位置。 另外,我不会使用名称&#34; map&#34;变量(因为已经使用过)

#include <map>
#include <string>

std::map<std::string, int> mymap;
mymap["Privilege"] = 1;

std::string code = "Privilege";

val = mymap.find(code);  
val = mymap.find("Privilege");  

答案 2 :(得分:1)

在C ++应用程序中,请勿使用char*,而是使用string。我的意思是,将地图定义为map<string , int> MyMap;

顺便说一下,map不是变量的好名字: - )