STL之map,multimap
- 头文件及声明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace std
{
template <typename Key, typename T,
typename Compare = less<key>,
typename Allocator = allocator<pair<const Key, T>>>
class map;
template <typename Key, typename T,
typename Compare = less<key>,
typename Allocator = allocator<pair<const Key, T>>>
class multimap;
}
插入,删除
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23std::map<std::string, float> coll;
/*
1.用初始化列表。
*/
coll.insert( {"otto", 22.3 } );
/*
2.使用value_type
*/
coll.insert(std::map<std::string, float>::value_type("otto", 22.3));
/*
3.使用pair<>
*/
coll.insert(std::pair<std::string, float>("otto", 22.3));
/*
4.使用make_pair()
*/
coll.insert(std::make_pair("otto", 22.3));
/*
insert(val)对于map来讲依然返回一个pair<iterator, bool>类型的值。
*/使用[]的缺点
- 当你想要查询一个key-value是否存在时,无意插入了一个值,比如
cout << coll["aa"]
,但是并没有这个key-value,这样会插入一个aa的key,value是0. - 使用[]速度慢,因为先要将value初始化为0,然后再用新的值覆盖。