C++ map<key , value> key值为指针
STL中map的key能否用char *呢?当然可以!
在程序中需要用到一个map,本来是这样写的,
map<string, int> mapStr;
为了追求效率,把string改成了char *,
map<char *, int> mapStr;
结果呢?
可想而知,每次放进去的是指针,
当查找的时候就出问题了,总是找不到。
因为key中存放的是指针,当然找不到了。
需要重载一下操作符,当查找时比较指针对应的字符串就可以了。
修改如下:
struct ptrCmp
{
    bool operator()( const char * s1, const char * s2 ) const
    {
        return strcmp( s1, s2 ) < 0;
    }
};
map<char *, int, ptrCmp> mapStr;
再进行查找就OK了!
===========================
重载操作符示例
Stru_NHSymbol>* pmapNHSymbolInfo1
Stru_NHSymbol*> * pmapNHSymbolInfo2
Stru_NHSymbol*>* pmapNHSymbolInfo2在find的时候是根据指针进行查找的。而在数据insert时,数据都是new的,每次new出的地址是不一样的,在find数据时,根据地址查找结果就找不到数据。通过遍历是取出地址中内容一一比较,这样能够找到数据。
map中key不要使用指针,请直接使用对象。
C++ map<key , value> key值为指针的更多相关文章
- 过滤掉map集合中key或value为空的值
		package cn.com.utils; import org.apache.commons.lang3.StringUtils; import java.util.Collection; impo ... 
- jsp页面使用el 按key获取map中的对应值
		jsp页面使用el 按key获取map中的对应值 转自:<jsp页面使用el 按key获取map中的对应值>地址:http://blog.csdn.net/baple/article/de ... 
- 在map中一个key中存多个值
		一说到map都想到key-value键值队存在.key可以为最多一个null的key. 今天开发中一个业务需求,在map中一个key中存多个对象. 我首先想到Map<String,List> ... 
- map.keySet()获取map全部的key值
		map.keySet()获取map全部的key值 public static String getUrlWithQueryString(String url, Map<String, Str ... 
- JavaWeb EL表达式 key为数值 Map取不到值
		JavaWeb EL表达式 key为 Map取不到值 因为JSTL会把Integer,Byte,Short,Charactor都转成Long,这样就取不到值. 参见StackOverFlow的回答 ... 
- 【Java必修课】通过Value获取Map中的键值Key的四种方法
		1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ... 
- 通过Value获取Map中的键值Key的四种方法
		1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ... 
- C++ STL中Map的按Key排序和按Value排序
		map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ... 
- C++ STL中Map的按Key排序跟按Value排序
		C++ STL中Map的按Key排序和按Value排序 map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定 ... 
随机推荐
- Linux MMC framework2:基本组件之host
			声明:本文很多内容和思路参考了http://www.wowotech.net/comm/mmc_host_driver.html,对原作者表示感谢! 1.前言 本文是Linux MMC framewo ... 
- centos6.5环境基于corosync+cman+rgmanager实现RHCS及iscsi+gfs2+clvm的文件系统集群
			centos6.5环境基于corosync+cman+rgmanager实现RHCS及iscsi+gfs2+clvm文件系统集群 一.环境准备 服务器列表: ansible server : 192. ... 
- XPATH语法(二)
			节点(node) 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节点. 以下面这xm ... 
- Java集合框架入门介绍(一)
			Java工具包(java.util)提供了强大的数据结构,主要有以下几种接口或类 枚举Enumeration 接口 从数据集合中取回一系列连续值的方法 位集合 BitSet 可以单独清楚或设置的位和标 ... 
- wpf  Assembly.LoadFile dll GetType 反射 抛异常 不具有由 URI 识别的资源。
			public static void LoadViewFromUri(this Window window, string baseUri) { try { var resourceLocater = ... 
- JAVA Random 随机类
			nextInt 方法 得到一个随机整数, 可以指定范围 package object; import static net.util.Print.*; import java.util.Random; ... 
- jquery----扩展事件
			常用事件 blur([[data],fn]) 失去焦点 focus([[data],fn]) 获取焦点( 搜索框例子) change([[data],fn]) 当select下拉框中的元素发生改变的时 ... 
- python3 + selenium 运行过程中进行截图
			使用driver.get_screenshot_as_file方法("D:/aaac.png")括号中为需要存放的路径及图片名称 from selenium import webd ... 
- Python 多环境配置管理
			一.概述 实际工程开发中常常会对开发.测试和生产等不同环境配置不同的数据库环境,传统方式可以通过添加不同环境的配置文件达到部署时的动态切换的效果.这种方式还不错,不过不同环境间往往会共享相同的配置而造 ... 
- boto3--通过Python的SDK连接aws
			通过Python的SDK连接aws 参考: https://aws.amazon.com/cn/developers/getting-started/python/ aws上生成访问密钥 ID 和私有 ... 
 
			
		