文档章节

map和unordered_map的使用(中级)

徐学良
 徐学良
发布于 2015/06/08 20:05
字数 235
阅读 88
收藏 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;
}

© 著作权归作者所有

共有 人打赏支持
徐学良
粉丝 24
博文 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

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud搭建微服务架构----流量回放

前言 系统微服务化后,传统的自测/测试方式都变得比较困难: 依赖的服务可能不稳定。 服务无法提供期望的响应数据。 缺少场景构造标准。 随着整体业务越来越复杂,微服务依赖的越来越多,测试...

春哥大魔王的博客
33分钟前
3
0
记一次springboot模块配置问题导致读取Apollo配置中心配置文件始终错误的问题

现在正在做的一个项目采用的是微服务,主框架是spring cloud,配置中心用的是携程的Apollo。 项目下有多个服务,在测试服务器上启动用户服务的时候发现在eureka中心另一个服务被启动了,尝试...

zcqshine
34分钟前
6
0
流处理和批处理框架的异同

分布式流处理需求日益增加,包括支付交易、社交网络、物联网(IOT)、系统监控等。业界对流处理已经有几种适用的框架来解决,下面我们来比较各流处理框架的相同点以及区别。 分布式流处理是对...

hblt-j
37分钟前
4
0
spring cloud 面试题

什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件 简化...

狼王黄师傅
39分钟前
4
0
前嗅ForeSpider教程:采集黄页88

以黄页88为例,采集当前列表页新闻的正文数据: 第一步:新建任务 ①点击左上角“加号”新建任务,如图1: 【图1】 ②在弹窗里填写采集地址,任务名称,如图2: 【图2】 ③点击下一步,选择进...

forespider
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部