最近工作中需要使用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"},
....
};
时间: 2024-10-25 06:08:53