文档章节

map和unordered_map的使用(中级)

徐学良
 徐学良
发布于 2015/06/08 20:05
字数 235
阅读 80
收藏 0

map和unordered_map使用起来一样,但是unordered_map的性能比map要好非常多。

当我们需要一个有序的关联容器的时候,我们必须选择std::map,因为 unordered_map 内部元素不是有序的,这一点从名字都可以看出来,除此之外都应该选择 unordered_map 

头文件:

unordered_map     #include <unordered_map> 

map  不需要

使用:

定义map类型:typedef std::map<int, std::shared_ptr<A>> A_map;

                        A_map a_map;

查找并插入:

A_map::iterator iter = a_map.find(int_num);

if(iter ==a_map.end())
 {
  a_map.insert(std::make_pair(int_num, a_map_ptr));    //    a_map_ptr 必须是std::shared_ptr<A>类型的

}

查找并删除

A_map::iterator iter = a_map.find(int_num);

if(iter !=a_map.end())
 {
  a_map.erase(iter);

}

直接删除

a_map.erase(int_num);

清空

a_map.clear();


查找------------

A temp_a = a_map.find(int_num);

找不到新建

if(nullptr == temp_a)
 {
  temp_a.reset(new A());

a_map.insert(std::make_pair(int_num, temp_a));

 }

返回第二个元素的函数

std::shared_ptr<A> find_temp_a(const int &int num)
{

 A_map:iterator iter = a_map.find(int_num);
 if(iter != a_map.end())
 {
  return iter->second;
 }
 return nullptr;
}

© 著作权归作者所有

共有 人打赏支持
徐学良
粉丝 22
博文 213
码字总数 13841
作品 0
浦东
程序员
map和unordered_map

map 是有序的 内部通常是红黑树实现 unorderedmap 是无序的 内部是hash 所以unorderedmap 的插入查找删除速度比map快几倍,对数据的顺序没有要求时尽量用unorderedmap Note: erase的时候 为...

梦想游戏人
2016/04/06
158
0
Cocos2d-x3.0模版容器详解之二:cocos2d::Map

1.概述 版本: v3.0 beta 语言: C++ 定义在 “COCOS2DXROOT/cocos/base” 路径下的 "CCMap.h" 的头文件中。 ? cocos2d::Map<K,V> 是一个内部使用了 std::unorderedmap的关联容器模版。 std::u...

_子墨
2014/08/15
0
0
vector,map 注意事项

1.关于vector的越界访问: 首先以上的代码可以正确编译通过并运行的,不过list[5]是0,在vector中,如果通过[i]下标访问元素,是不会进行越界检查的。所以一般情况不要通过下标来直接访问,建...

lxfeng
2016/04/30
59
0
C++ STL----associative containers

Set: Sets are typically implemented as binary search trees. Therefore, the main characteristics of set as an associative container are: Unique element values: no two elements in......

zhujianbest
2010/06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js 操作cookie

var cookie = {// 设置cookie方法set:function(key, val, time){// 获取当前时间var date = new Date();// 将date设置为n天以后的时间var expiresDays = time;//...

小丶二
33分钟前
1
0
限制root远程登录 su和sudo命令

9月21日任务 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 对于Linux而言,权限的重要性毋庸置疑!对于普通用户而言无法执行那些只有root用户才能有效的命令,导致工作无法有效进行; 系统...

robertt15
35分钟前
2
0
MQTT协议的初浅认识之通讯级别和持久会话

背景 这是我最近了解MQTT协议的最后一部分内容了,MQTT协议里面的QOS和Keep Alive是两个比较重要的内容。QOS的设置,直接影响了订阅客户端与中间件之间的消息交互行为。而Keep Alive直接影响...

亚林瓜子
37分钟前
2
0
calc

width: calc(100% - 30px); 特别注意:减号左右空格,均不能去掉。 width: calc(100% - 30px);

柴高八斗之父
45分钟前
1
0
Spring Cloud Gateway全局过滤器GlobalFilter:返回消息和重定向

Spring Cloud Gateway的全局过滤器GlobalFilter,顾名思义,声明后会对所有的请求生效,可以用来做权限控制,这里简单记录一下拦截到非法请求后如何返回自定义信息和将请求重定向到指定URL。...

夜雨寄北09
47分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部