C++ map
1、map简介
map是STL的一个关联容器,它提供一对一的hash。自动建立key-value的对应。key 和 value可以是任意需要的类型,包括自定义类型。因为map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。
map主要用于一对一映射(one-to-one)的情況。map內部的实现了一个红黑树,这颗树具有对数据自动排序的功能。同时对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行的操作。
2、头文件
3、成员函数
成员函数 |
函数功能 |
insert |
在map中插入元素。 |
emplace |
构造新元素并将其插入map。 |
emplace_hint |
通过提示构造新元素并将其插入map。 |
find |
搜索具有给定键的元素。 |
begin |
返回指向map中第一个元素的迭代器。 |
end |
返回指向末尾的迭代器。 |
cbegin |
返回指向map中第一个元素的const迭代器。 |
cend |
返回指向末尾的常量迭代器。 |
rbegin |
返回指向末尾的反向迭代器。 |
rend |
返回指向起点的反向迭代器。 |
crbegin |
返回指向末尾的常量反向迭代器。 |
crend |
返回指向起点的常量反向迭代器。 |
clear |
删除map的所有元素。 |
size |
返回map中的元素数。 |
max_size |
返回map的最大容量。 |
count |
返回的是被查找元素的个数。如果有,返回1;否则,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。 |
empty |
如果map为空,则返回true。 |
erase |
从map上删除元素。 |
upper_bound |
返回第一个大于值val的位置 |
lower_bound |
返回第一个大于等于值val的位置 |
swap |
交换map内容。 |
at |
用给定的键检索元素。 |
3.1 插入操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| map<int, string> m;
m[1] = "zhangsan";
pair<iterator,bool> insert (const value_type& val);
iterator insert (const_iterator position, const value_type& val);
void insert (InputIterator first, InputIterator last);
void insert (initializer_list<value_type> il);
|
3.2 取值操作
map中元素取值主要有at和[ ]两种操作。
1 2 3 4
| map<int, string> m;
cout << m[1] << endl; cout << m.at(1) << endl;
|
3.3 容量查询
1 2 3 4 5 6 7 8 9 10 11 12
| bool empty();
size_t size();
size_t max_size();
size_t count(const Key& key) const;
|
3.4 删除操作
1 2 3 4 5 6 7 8 9 10 11
| iterator erase( iterator pos )
iterator erase( const_iterator first, const_iterator last );
size_t erase( const key_type& key );
void clear();
|
3.5 查找操作
1 2 3 4
|
iterator find (const key_type& k); const_iterator find (const key_type& k) const;
|