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 插入操作
| 12
 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和[ ]两种操作。
| 12
 3
 4
 
 | map<int, string> m;
 cout << m[1] << endl;
 cout << m.at(1) << endl;
 
 | 
3.3 容量查询
| 12
 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 删除操作
| 12
 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 查找操作
| 12
 3
 4
 
 | 
 iterator find (const key_type& k);
 const_iterator find (const key_type& k) const;
 
 |