pair类型
定义在 utility头文件中
pair是一个用来生成特定类型的模板,类中存储2个相关的成员变量
map中每个元素就是一个pair对象
pair<T1,T2> p(v1,v2);//v1是first,v2是second
p.first
p.second
构造函数
Pair()
创建 Pair 类的未初始化的新实例。
Pair(Object^, Object^)
使用指定的对象对初始化 Pair 类的新实例。
类别名称
map : key_type
mapped_type
value_type // 相当于pair<const key_type,mapped_type>
set: key_type
value_type
一个map的value_type是一个pair,可以改变pair的成员函数,但是不能改变关键字成员的值(const)
关联容器的迭代器
first() end()
添加元素
insert()
//对set
insert(p,q);
insert(a);a为一个初始化器列表
//对map
insert(pair<T1,T2>(v1,v2));
insert(make_pair(v1,v2));
添加单一的元素时候返回pair
pair是first的迭代器,指向具有给定关键字的元素(pair),(指向自己的指针)
second是一个bool值,插入成功时候返回true;
map < string, size_t> words;
string word;
while (cin >> word)
{
auto rat = words.insert({ word, 1 });//rat是pair类的对象
if (!rat.second)//如果单词已经存在,insert什么也不做,rat.second返回0,
++(rat.first->second);//rat.first是一个迭代器指向rat本身
}
删除元素
erase(key_type)
删除一个关键字(包括关键字对应的所有值),返回删除的元素数量
map的下标操作
c[k]
返回关键字为k的元素,如果k不存在,则添加一个关键字为k的元素,对其值进行初始化
c.at[k]
c[mapped_type] 返回 key_value
访问元素
find(k) 对不允许重复关键字的容器,返回一个指向关键字为k的元素的迭代器,如果k不在容器内,返回尾后迭代器
count(k) 返回关键字等于k的元素数量,对于map,set,返回的只有1或0
lower_bound(k)返回一个迭代器,指向第一个具有关键字k的元素
upper_bound(k)。。。。。最后一个具有。。
不存在时候,都返回尾后迭代器
equal_range(K)
返回一个pair,其中first返回最前面匹配的元素迭代器,second返回最后面。。。