概念
map是STL的一个关联容器,它提供一对一的hash。
- 第一个可以称为关键字(
key),每个关键字只能在map中出现一次; - 第二个可能称为该关键字的值(
value);
map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能。在map内部所有的数据都是有序的,后边我们会见识到有序的好处。比如一个班级中,每个学生的学号跟他的姓名就存在著一对一映射的关系。
头文件
1 |
名字空间
1 | std |
构造函数
定义:
1 | map<Type,Type> |
第一个Type是键的类型,第二个Type是值的类型。
常用函数
begin
语法:
1 | iterator begin(); |
begin()函数返回一个迭代器指向map的第一个元素。
clear
语法:
1 | void clear(); |
clear()函数删除map中的所有元素。
count
语法:
1 | size_type count( const KEY_TYPE &key ); |
count()函数返回map中键值等于key的元素的个数。
empty
语法:
1 | bool empty(); |
empty()函数返回真(true)如果map为空,否则返回假(false)。
end
语法:
1 | iterator end(); |
end()函数返回一个迭代器指向map的尾部。
equal_range
语法:
1 | pair equal_range( const KEY_TYPE &key ); |
equal_range()函数返回两个迭代器——一个指向第一个键值为key的元素,另一个指向最后一个键值为key的元素。
erase
语法:
1 | void erase( iterator pos ); |
erase()函数删除在pos位置的元素,或者删除在start和end之间的元素,或者删除那些值为key的所有元素。
find
语法:
1 | iterator find( const KEY_TYPE &key ); |
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
get_allocator
语法:
1 | allocator_type get_allocator(); |
get_allocator()函数返回map的配置器。
insert
语法:
1 | iterator insert( iterator pos, const pair<KEY_TYPE,VALUE_TYPE> &val ); |
insert()函数:
- 插入
val到pos的后面,然后返回一个指向这个元素的迭代器。 - 插入
start到end的元素到map中。
只有在val不存在时插入val。返回值是一个指向被插入元素的迭代器和一个描述是否插入的bool值。
示例:
1 | // 定义一个map对象 |
以上三种用法,虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的 插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是不能在插入数据的,但是用数组方式就不同了,它可以覆盖以前该关键字对 应的值。
key_comp
语法:
1 | key_compare key_comp(); |
key_comp()函数返回一个比较key的函数。
lower_bound
语法:
1 | iterator lower_bound( const KEY_TYPE &key ); |
lower_bound()函数返回一个迭代器,指向map中键值>=key的第一个元素。
max_size
语法:
1 | size_type max_size(); |
max_size()函数返回map能够保存的最大元素个数。
rbegin
语法:
1 | reverse_iterator rbegin(); |
rbegin()函数返回一个指向map尾部的逆向迭代器。
rend
语法:
1 | reverse_iterator rend(); |
rend()函数返回一个指向map头部的逆向迭代器。
size
语法:
1 | size_type size(); |
size()函数返回map中保存的元素个数。
swap
语法:
1 | void swap( map &obj ); |
swap()交换obj和现map中的元素。
upper_bound
语法:
1 | iterator upper_bound( const KEY_TYPE &key ); |
upper_bound()函数返回一个迭代器,指向map中键值>key的第一个元素。
value_comp
语法:
1 | value_compare value_comp(); |
value_comp()函数返回一个比较元素value的函数。