C++标准模板库(STL)用法介绍:map
map:映射,STL容器之一,可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)。
使用map前需要添加:
#include <map>
using namespace std;
1. map声明
map是一个模板类,所以使用前需要声明。
map<typename1, typename2> mp;
typename1, typename2可以是任何基本类型,也可以是STL标准容器
typename1代表键的类型,typename2代表值的类型,这样便会构成键-值映射
如果键值类型都是int,那么就相当于普通的int型数组
注:如果是字符串做映射时,必须使用string,而不能用char数组(因为数组不能作为键值)
2. map访问
一般有两种访问map内元素的方法:通过下标或者map的迭代器
(1)通过下标访问
类似于访问数组,map通过键作为下标访问值,所以键值是唯一的
(2)通过迭代器访问
迭代器(iterator)理解为类似指针的东西,定义为:
map<typename1, typename2>::iterator it;
it是vector<typename>::iterator类型的变量,*it用来访问vector里的元素。迭代器都支持支持自增自减,但只有vector和string支持加减整数的操作。因此,map只能通过迭代器的自增迭代去访问元素,不支持*(it + i)的访问方式。map的每个元素由键-值构成,于是使用it->first访问键,使用it->second访问值。map会以键的增序自动排序,类似于set。
假设现在有一个map容器mp,那么,mp.begin()和mp.end()标志着迭代器的开头(首元素的地址)和结尾(尾元素地址的下一个地址)。
注:对于不是vector或string的容器,用*(it + i)访问失去了意义,但可用下标访问元素
3. map常用函数
(1) find()
mp.find(key)用来返回键为key的映射的迭代器
(2) erase()
-
删除单个元素
- mp.erase(it)用来删除迭代器it处的映射
- mp.erase(key)用来删除键为key的映射
-
删除一个区间内的所有元素
mp.erase(first, last)用来删除迭代器[first, last)内的所有元素
(3) size()
size()用来获得map中映射的对数
(4) clear()
clear()用来将map中的所有元素清空
4. map用途
(1)字符串与整数之间的映射
(2)当做bool数组
判断大整数或者其他类型数据是否存在
(3)字符串和字符串的映射
欢迎访问我的STL系列: