码迷,mamicode.com
首页 > 其他好文 > 详细

没有躲过的坑--map的初始化(插入数据)

时间:2015-11-23 23:42:07      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:

最近工作中需要使用map,进行查询。

首先简单介绍一点map,也许是教科书里讲授最少的STL知识吧。但是在实际工作中map挺重要的,用于查找很方便快捷,尤其是以键和值的形式存在的!

1、头文件

#include<map>

2、map的功能

自动建立Key - value的对应。key 和 value可以是任意你需要的类型。
根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。
快速插入Key - Value 记录。
快速删除记录
根据Key 修改value记录。
遍历所有记录。

3、map的构造函数
map共提供了6个构造函数,我们通常用如下方法构造一个map:

Map<int, string> mapStudent;

4、插入数据
(1)my_Map[“a”]=1;

改变map中的条目非常简单,因为map类已经对[]操作符进行了重载

enumMap[1] = “One”;

enumMap[2] = “Two”;

…..

这样非常直观,但存在一个性能的问题。插入2时,先在enumMap中查找主键为2的项,没发现,然后将一个新的对象插入enumMap,键是2,值是一个空字符串,插入完成后,将字符串赋为”Two”; 该方法会将每个值都赋为缺省值,然后再赋为显示的值,如果元素是类对象,则开销比较大。我们可以用以下方法来避免开销:

enumMap.insert(map<int, CString> :: value_type(2, "Two"))
my_Map.insert(map<string,int>::value_type("b",2));
my_Map.insert(pair<string,int>("c",3));
my_Map.insert(make_pair<string,int>("d",4));

起初我就是用上面愚蠢的方法进行了插入数据,但是我的数据量挺大的,需要近一千对,总不能一条一条的这样写吧。

于是想起了之前写的博客《c++11特性之initializer_list》,是不是可以使用初始化列表对map进行赋值呢,答案是肯定的。

std::map<int, string> int_to_string = {
{1, "what"},
{2, "a"},
{3, "fuck"},
{4, "day"},
....
};

没有躲过的坑--map的初始化(插入数据)

标签:

原文地址:http://blog.csdn.net/wangshubo1989/article/details/50001185

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!