c++ map find函数返回错误
map<char*,UINT32>map_a;map<char*,UINT32>::iteratoriter1,iter2;map_a["AAA"]=2;charname...
map <char*,UINT32> map_a;
map <char*,UINT32>::iterator iter1, iter2;
map_a["AAA"]=2;
char name[20] = "AAA";
iter1 = map_a.find("AAA");
iter2 = map_a.find(name);
为什么iter1是OK的,Iter2却是Bad Pointer 展开
map <char*,UINT32>::iterator iter1, iter2;
map_a["AAA"]=2;
char name[20] = "AAA";
iter1 = map_a.find("AAA");
iter2 = map_a.find(name);
为什么iter1是OK的,Iter2却是Bad Pointer 展开
2个回答
展开全部
建议map的键类型使用string。如下:
map<string, UINT32> map_a;
map<string, UINT32>::iterator iter1, iter2;
因为一开始定义的是以字符指针为键,而字符数组的名称表示第一个元素的地址,即name[0]的地址。所以map_a.find(name)实际上是寻找是否有以name[0]的地址为键的项,所以会失败。
如果你一定要用char*的话,那么name应该这么定义才对:
char *name="AAA";
map<string, UINT32> map_a;
map<string, UINT32>::iterator iter1, iter2;
因为一开始定义的是以字符指针为键,而字符数组的名称表示第一个元素的地址,即name[0]的地址。所以map_a.find(name)实际上是寻找是否有以name[0]的地址为键的项,所以会失败。
如果你一定要用char*的话,那么name应该这么定义才对:
char *name="AAA";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询