文档章节

C++ STL map补坑

熊友良
 熊友良
发布于 2015/08/29 22:23
字数 356
阅读 239
收藏 6

先讲下我的基本需求:选用C++ STL map容器用于存储关联数据,我的Key为std::string类型,Value为自定义类指针;这里假设为Object*;

其实踩到的坑很简单,就是用了map的下标操作和insert操作混合使用; 在插入操作之前用了map[name]作检测,发现返回的值为NULL,这时用insert(pair(name, value))去插入我想要的item;然后发现map中元素second始终为NULL;

//伪代码
function insertValue(std::string name, Object* value){
    auto value = dataMap[name]; // 标记:1
    if(value == NULL){
        std::pair<std::string, Object*> item(name, value);
        dataMap.insert(item);
    }
    ...//其他操作
}

然后会发现刚刚插入的Key=name的元素的Value始终是NULL; 这里踩到的坑就是 “标记:1”处用了下标操作;下表操作展开:因为Key=name的元素不存在,map中会插入Key=name的元素并自动将Value初始化为NULL; 接下来再使用insert插入实际要的元素时,发现map中已经有Key=name的元素,插入操作不成功;从而导致bug;

写多了脚本,C++的语法忘得差不多了,万恶的C++!^_^;

1、查询map中是否有相关的元素,推荐使用find操作; 2、使用下标操作,但要多加留心; 3、insert操作是有返回值的,最好做相应的检测

© 著作权归作者所有

熊友良
粉丝 4
博文 18
码字总数 6327
作品 0
广州
程序员
私信 提问
[转] C++ 的反思

最近两年 C++又有很多人出来追捧,并且追捧者充满了各种优越感,似乎不写 C++你就一辈子是低端程序员了,面对这种现象,要不要出来适时的黑一下 C++呢?呵呵呵。 原文地址:http://www.skyw...

OSC编辑部
2015/07/27
2.1K
19
C++ STL 遍历 map 的时候如何删除其中的 element

我们通过map的erase(iterator it)方法删除元素的时候,如果此时erase处于遍历map的代码中,那么调用erase就需要小心一些。因为erase会导致输入参数iterator变的无效,从而影响后续的it++遍历...

鉴客
2011/10/13
7.2K
2
【转载】数据结构利器之私房STL

数据结构利器之私房STL 此系列的文章适合初学有意剖析STL和欲复习STL的同学们。 学过c++的同学相信都有或多或少接触过STL。STL不仅仅是c++中很好的编程工具(这个词可能有点歧义,用类库更恰...

悠米海
2012/12/02
205
0
Redhat-9.0中安装开源软件CVSSearch编译出错

我在redhat中安装开源软件CVSSearch,把需要提前安装的sleepycat(berkelly db)和omsee(xapian)都装好了,zlib也装了,最后安装CVSSearch的时候,configure的时候发现有一项是no的,就是c++...

王沿途
2012/12/20
106
2
iOS学习之Map,定位,标记位置的使用

iOS上使用地图比Android要方便,只需要新建一个MKMapView,addSubView即可。这次要实现的效果如下: 有标注(大头针),定位,地图。 1、添加地图 1.1 新一个Single View app ,选择默认项,创...

嘻哈开发者
2014/07/24
166
0

没有更多内容

加载失败,请刷新页面

加载更多

shangcheng-my

1.数据库主键、外键类型为bigint,那么在后台应该用什么类型的变量定义? 后台用string接收,因为前段传过来的一般都是json字符串,后台直接接收,mysql是可以吧数字类型的字符串转换为对应的...

榴莲黑芝麻糊
昨天
1
0
微服务架构依赖图

基于spring-cloud-alibaba + dubbo

龙影
昨天
3
0
Centos7 安装zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/4.2/rhel/6/x86_64/zabbix-release-4.2-2.el6.noarch.rpm 可以到https://repo.zabbix.com/zabbix找到对应的版本 yum install zabbix-agent -y 出现E......

abowu
昨天
8
0
文本编辑器GNU nano 4.4 发布

GNU nano 4.4 "Hagelslag" 更新日志: 启动时,光标可以放在第一个或最后一个出现位置 字符串前面带有+/string 或 +?string的字符串。 发生自动硬包装时((--breaklonglines),任何前导引号...

linuxCool
昨天
7
0
你知道字节序吗

字节序 最近在调一个自定义报文的接口时,本来以为挺简单的,发现踩了好几个坑,其中一个比较“刻骨铭心”的问题就是数据的字节序问题。 背景 自定义报文,调用接口,服务端报文解析失败 iO...

杭城小刘
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部