这篇文章的内容是关联容器。这章的主要内容还是在告诉我们怎么使用关联容器。
顺序容器靠位置索引,关联容器靠关键字索引。
总结一下,主要有三种分类方式:map类型和set类型、关键字是否可重复出现、是否有序存储。
一、使用关联容器 1.map的简单使用 2.set的简单使用二、关联容器概述
上面的内容先定性介绍了一下关联容器跟顺序容器的使用区别。
1.定义关联容器1)初始化map或set
2)初始化multimap或multiset
2.关键字类型的要求1)有序容器的关键字类型
一个新的词:严格弱序。不过讲了那么多直接看最后的note就好了。
2)使用关键字类型的比较函数
即如果要使用自己的类对象往set里面丢,这个时候我们需要定义比较函数,否则无法调用排序功能。
3.pair类型没啥好讲的,知道了map的操作,理解pair小菜一碟。
1)创建pair对象的函数
即使用make_pair函数创建。
三、关联容器操作
这节的开胃小菜,介绍关联容器额外的类型别名比较值得注意的是map的value_type是pair类型的。
1.关联容器的迭代器1)set的迭代器是const的
毕竟set的value_type是指向关键字的。
2)遍历关联容器
举个例子:
set
关联容器也是可以使用范围for语句遍历的。
3)关联容器和算法
2.添加元素1)向map添加元素
在这主要是介绍用insert来完成插入操作。后面还会介绍其他的插入方式。
2)检查insert的返回值
要知道insert的返回值代表的什么意思。
3)展开递增语句
接下来是在接上面的内容,进一步解释insert的返回值的意义和使用
4)向multiset或multimap添加元素
multiset或multimap添加元素时不会去重。
3.删除元素 4.map的下标操作平时访问元素添加元素用的比较多的便是下标操作。
想要不自动创建的话要用at
1)使用下标操作的返回值
5.访问元素1)对map使用find代替下标操作
2)在multimap或multiset中查找元素
接下来介绍的两种方法主要就为了解决multimap或multiset的访问问题。
3)lower_bound与upper_bound
lower_bound与upper_bound是一种不同的,面向迭代器的解决方法
注: lower_bound与upper_bound对解决multimap或multiset的访问问题效果极佳
4)equal_range函数
对解决multimap或multiset的访问问题效果也是极佳
6.一个单词转换的map接下来的内容主要是通过举一个例子对本节内容进行一个总结。这部分没啥难的地方,仔细阅读就能理解了。
1)题目与任务
2)单词转换程序
3)建立转换映射
4)生成转换文本
四、无序容器 1.使用无序容器 2.管理桶关于哈希桶可参考:
【数据结构】哈希桶_Cheng_913的博客-CSDN博客_数据结构 桶
哈希桶的实现_xy的博客-CSDN博客_哈希桶
3.无序容器对关键字的要求主要在讲当无序容器的关键字是自定义类型时,该怎么处理。