C++ Primer 学习笔记——关联容器的操作

来源:互联网 发布:英语磨耳朵软件 编辑:程序博客网 时间:2024/05/22 13:45

pair类型

定义在 utility头文件中
pair是一个用来生成特定类型的模板,类中存储2个相关的成员变量
map中每个元素就是一个pair对象

pair<T1,T2> p(v1,v2);//v1是first,v2是secondp.firstp.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()

//对setinsert(p,q);insert(a);a为一个初始化器列表//对mapinsert(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返回最后面。。。

0 0