文档章节

map和unordered_map的使用(中级)

徐学良
 徐学良
发布于 2015/06/08 20:05
字数 235
阅读 66
收藏 0
点赞 0
评论 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
博文 196
码字总数 13841
作品 0
浦东
程序员
map和unordered_map

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

梦想游戏人 ⋅ 2016/04/06 ⋅ 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

vector,map 注意事项

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

lxfeng ⋅ 2016/04/30 ⋅ 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

C++中的哈希容器unordered_map

随着C++0x标准的确立,C++的标准库中也终于有了hash table这个东西。 很久以来,STL中都只提供<map>作为存放对应关系的容器,内部通常用红黑树实现,据说原因是二叉平衡树(如红黑树)的各种...

曾劲松 ⋅ 2016/06/15 ⋅ 0

C++中的哈希容器unordered_map

随着C++0x标准的确立,C++的标准库中也终于有了hash table这个东西。 很久以来,STL中都只提供<map>作为存放对应关系的容器,内部通常用红黑树实现,据说原因是二叉平衡树(如红黑树)的各种...

曾劲松 ⋅ 2016/06/15 ⋅ 0

c++11 容器库

一、顺序容器 顺序容器是提供能够按顺序访问元素功能的容器。 array 静态连续的数组 vector 动态连续的数组 deque 双端队列 forwardlist 单向链表 list 双向链表 二、关联容器 关联容器通过使...

bobwei ⋅ 2016/01/07 ⋅ 0

C++ unordered_map remove 实现哈希表移除

使用C++的unordered_map类型时,我们经常要根据关键字查找,并移除一组映射,在Java中直接用remove即可,而STL中居然没有实现remove这个函数,还要自己写循环来查找要删除项,然后用erase来清...

机器的心脏 ⋅ 2017/12/15 ⋅ 0

C++性能系列之map的使用误区

代码逻辑的实现需要键值对的时候我们喜欢偷懒,声明了不少map类型的局部变量,完全没有意识到map的真正用途。map是平衡二叉树,适用于快速检索。由于二叉平衡树插入机制以及内存分配的原因,...

caoshiying ⋅ 2017/10/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部