C++的STL 中 set.map multiset.multimap 学习使用详细讲解(含配套OJ题练习使用详细解答)
目录
一、set
1.set的介绍
2.set的使用
2.1 set的模板参数列表
2.2 set的构造
2.3 set的迭代器
2.4 set的容量
2.5 set的修改操作
2.6 set的使用举例
二、map
1.map的介绍
2.map的使用
2.1 map的模板参数说明
2.2 map的构造
2.3 map的迭代器
2.4 map的容量与元素访问
2.5 map中元素的修改
2.6 map的使用举例
三、multiset
1.multiset的介绍
2.multiset的使用
四、multimap
1.multimap的介绍
2.multimap的使用
五、OJ题练习使用
1.前K个高频单词
2.两个数组的交集
六、完结撒❀
一、set
1.set的介绍
set文档介绍
翻译: 1. set是按照一定次序存储元素的容器。 2. 在 set 中,元素的 value 也标识它 (value 就是 key ,类型为 T) ,并且每个 value 必须是唯一的。 set中的元素不能在容器中修改( 元素总是 const) ,但是可以从容器中插入或删除它们。 3.在内部, set 中的元素总是按照其内部比较对象 ( 类型比较 ) 所指示的特定严格弱排序准则进行 排序。 4. set容器通过 key 访问单个元素的速度通常比 unordered_set 容器慢,但它们允许根据顺序对 子集进行直接迭代。 5. set在底层是用二叉搜索树 ( 红黑树 ) 实现的。 注意: 1. 与 map/multimap 不同, map/multimap 中存储的是真正的键值对 , set 中只放 value ,但在底层实际存放的是由 构成的键值对。 2. set 中插入元素时,只需要插入 value 即可,不需要构造键值对。 3. set 中的元素不可以重复 ( 因此可以使用 set 进行去重 ) 。 4. 使用 set 的迭代器遍历 set 中的元素,可以得到有序序列 5. set 中的元素默认按照小于来比较 6. set 中查找某个元素,时间复杂度为: log2 n 7. set 中的元素不允许修改 ( 为什么 ? --- 麻烦 排序的维护,唯一性的维护,时间复杂度的维护) 8. set 中的底层使用二叉搜索树 ( 红黑树 ) 来实现。2.set的使用
2.1 set的模板参数列表
T: set 中存放元素的类型,实际在底层存储 的键值对。 Compare : set 中元素默认按照小于来比较 Alloc : set 中元素空间的管理方式,使用 STL 提供的空间配置器管理2.2 set的构造
| 函数声明 | 功能介绍 |
| set(const Compare& comp = Compare(),const Allocstor& = Allocator()); | 构造空的set |
| set(InputIterator first,InputIterator last,const Compare& comp = Compare(),const Allocator& = Allocator()); | 用[first,last)区间中的元素构造set |
| set(const set& x); | set的拷贝构造 |
2.3 set的迭代器
| 函数声明 | 功能介绍 |
| iterator begin() | 返回set中起始位置元素的迭代器 |
| iterator end() | 返回 set 中最后一个元素后面的迭代器 |
| const_iterator cbegin() const | 返回 set 中起始位置元素的 const 迭代器 |
| const_iterator cend() const | 返回 set 中最后一个元素后面的 const 迭代器 |
| reverse_iterator rbegin() | 返回 set 第一个元素的反向迭代器,即 end |
| reverse_iterator rend() | 返回 set 最后一个元素下一个位置的反向迭代器, 即 rbegin |
| const_reverse_iterator crbegin() const | 返回 set 第一个元素的反向 const 迭代器,即 cend |
| const_reverse_iterator crend() const | 返回 set 最后一个元素下一个位置的反向 const 迭 代器,即 crbegin |
2.4 set的容量
| 函数声明 | 功能介绍 |
| bool empty() const | 检测set是否为空,空返回true,否则返回false |
| size_type size() const | 返回set中有效元素个数 |
2.5 set的修改操作
| 函数声明 | 功能介绍 |
| pair insert (const value_type& x ) | 在 set 中插入元素 x ,实际插入的是 构成的 键值对,如果插入成功,返回 , 如果插入失败,说明 x 在 set 中已经 存在,返回 |
| void erase ( iterator position ) | 删除 set 中 position 位置上的元素 |
| size_type erase ( const key_type& x ) | 删除 set 中值为 x 的元素,返回删除的元素的个数 |
| void erase ( iterator first, iterator last ) | 删除 set 中 [first, last) 区间中的元素 |
| void swap ( set& st); | 交换 set 中的元素 |
| void clear ( ) | 将 set 中的元素清空 |
| iterator find ( const key_type& x ) const | 返回 set 中值为 x 的元素的位置,没有找到返回end() |
| size_type count ( const key_type& x ) const | 返回 set 中值为 x 的元素的个数 |
2.6 set的使用举例
#include
void TestSet()
{
// 用数组array中的元素构造set
int array[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0, 1, 3, 5, 7, 9, 2, 4,
6, 8, 0 };
set s(array, array + sizeof(array) / sizeof(array[0]));
cout
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

