您的位置:首页 > 编程语言 > C语言/C++

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

2016-02-29 15:25 260 查看
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返回最后面。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: