概念
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
的函数。