char*做map的key使用时的问题
来源:互联网 发布:福建广电网络集团 网址 编辑:程序博客网 时间:2024/06/04 23:24
今天在工作中使用到map时,map中用char*字符串做key,后面通过key做find操作,发现找不到之前插入的元素。通过网上搜索,得出结论,find时,默认使用== 进行判断,char*只是指针,如果两个字符串值相同,但是地址不同,是无法匹配的。
所以最好使用std::string。如果非要用char*,需要使用find_if函数并且用bind2sd函数指定比较函数。
#include <map>#include <algorithm>#include <iostream> using namespace std; bool search(pair<char*, int> a, const char* b){ return strcmp(a.first, b) == 0 ? true : false;}int main(){ map<char*, int> test; test.insert(pair<char*, int>("abc", 1)); map<char*, int>::const_iterator iter = find_if(test.begin(), test.end(), bind2nd(ptr_fun(search), "abc")); if (iter != test.end()) { cout<< "find : " << iter->first << endl; } return 0;}
0 0
- char*做map的key使用时的问题
- char* 做map 的KEY
- [C++]char* 做map 的KEY
- map<char *, char *>的使用
- 将char *类型作为map的key时要谨慎。
- STL中map的key能否用char *呢?当然可以! map<char *, char *>
- C++ map中key使用指针的问题
- JAVA使用了CLASS作Map的Key导致问题
- C++ map中key使用指针的问题
- HashMap中使用object做key的问题
- Android使用Google Map服务时获取Map API Key时在Win7下出现的问题
- Map的key和value的使用
- map key value的排序问题
- byte[]作为Map key的问题
- mybatis 返回Map的key大小写问题
- STL map<char*,void*> 的find问题
- map key char*
- MAP转成LIST(KEY做索引)的实现方法。
- Alamofire源码解读系列(四)之参数编码(ParameterEncoding)
- tensorflow实现自编码器
- XML文件结构和基本语法
- 接口和抽象类的区别
- 在 win8.1 右键菜单加上“使用 Windows Defender 扫描”
- char*做map的key使用时的问题
- Java并发中的Lock—ReentrantLock
- CUDA学习--2
- mysql互为主从配置
- MinGW概念
- 自留笔记(静动网页)
- caffe中RGB图像三通道卷积过程学习推导
- 4 Python中的列表list
- TKmybatis的框架介绍和原理分析及Mybatis新特性演示