F_JustWei's Studio.

C++ map

字数统计: 963阅读时长: 3 min
2021/04/22 Share

C++ map

1、map简介

map是STL的一个关联容器,它提供一对一的hash。自动建立key-value的对应。key 和 value可以是任意需要的类型,包括自定义类型。因为map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。

map主要用于一对一映射(one-to-one)的情況。map內部的实现了一个红黑树,这颗树具有对数据自动排序的功能。同时对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行的操作。

2、头文件

1
#include <map> 

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;
// 如果已经存在键值 1,则会作赋值修改操作,如果没有则插入
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);

//c++11开始支持,使用列表插入多个
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
// 查询map是否为空
bool empty();

// 查询map中键值对的数量
size_t size();

// 查询map所能包含的最大键值对数量,和系统和应用库有关。
// 此外,这并不意味着用户一定可以存这么多,很可能还没达到就已经开辟内存失败了
size_t max_size();

// 查询关键字为key的元素的个数,在map里结果非0即1
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 );

// 根据Key来进行删除, 返回删除的元素数量,在map里结果非0即1
size_t erase( const key_type& key );

// 清空map,清空后的size为0
void clear();
3.5 查找操作
1
2
3
4
// 关键字查询,找到则返回指向该关键字的迭代器,否则返回指向end的迭代器
// 根据map的类型,返回的迭代器为 iterator 或者 const_iterator
iterator find (const key_type& k);
const_iterator find (const key_type& k) const;
CATALOG
  1. 1. C++ map
    1. 1.0.1. 1、map简介
    2. 1.0.2. 2、头文件
    3. 1.0.3. 3、成员函数
      1. 1.0.3.0.1. 3.1 插入操作
      2. 1.0.3.0.2. 3.2 取值操作
      3. 1.0.3.0.3. 3.3 容量查询
      4. 1.0.3.0.4. 3.4 删除操作
      5. 1.0.3.0.5. 3.5 查找操作