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

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返回最后面。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值