【C++入门到精通】C++入门 —— set & multiset (STL)
阅读导航
- 前言
- 一、set简介
- 二、std::set
- 1. std::set简介
- 2. std::set的使用
- - 基本使用
- - std::set的模板参数列表
- - std::set的构造函数
- - std::set的迭代器
- - std::set容量与元素访问函数
- 3. set的所有函数(表)
- 三、std::multiset
- 1. std::multiset简介
- 四、std::set与std::multiset的比较
- ⭕**相同点**
- ⭕**不同点**
- 如何选择set 和 multiset
- 温馨提示
前言
前面我们讲了C语言的基础知识,也了解了一些初阶数据结构,并且讲了有关C++的命名空间的一些知识点以及关于C++的缺省参数、函数重载,引用 和 内联函数也认识了什么是类和对象以及怎么去new一个 ‘对象’ ,也了解了C++中的模版,以及学习了几个STL的结构也相信大家都掌握的不错,接下来博主将会带领大家继续学习有关C++比较重要的知识点—— set & multiset (STL) 。下面话不多说坐稳扶好咱们要开车了😍
一、set简介
在C++中,set是标准库中的一个容器,它实现了有序、不重复的元素集合。set容器基于红黑树数据结构实现,提供了一系列的成员函数和操作符,用于对元素进行插入、删除、查找等操作。其中set又分为set和multiset,接下来博主将会带着大家认识一下这两个函数。
🔴 官方文档 > 链接
二、std::set
1. std::set简介
⭕ 官方文档 > 链接
std::set是C++标准库中提供的一个容器,它实现了一种有序的、不重复的元素集合。每个元素在std::set容器中都唯一,并且以特定的顺序进行排序。std::set是基于红黑树数据结构实现的,因此它具有高效的插入、删除和查找操作。
🍔以下是std::set容器的一些特点:
- 有序存储:std::set中的元素是按照特定的排序准则进行有序存储的,默认以升序排列。可以通过提供自定义的比较函数或函数对象来改变排序方式。
- 唯一性:std::set容器中的元素是唯一的,不允许存在重复的元素。当尝试插入已经存在的元素时,插入操作不会生效。
- 动态大小:std::set容器可以根据需要动态地增加或减少其大小。可以通过插入和删除操作来修改容器中的元素数量。
- 快速插入、删除和查找:基于红黑树数据结构,std::set容器提供了高效的插入、删除和查找操作。这些操作的平均时间复杂度为O(logN),其中N是容器中的元素数。
- 迭代器支持:std::set容器提供了迭代器,可以用于遍历容器中的元素,并对其进行读取或修改操作。
- 不支持直接访问元素:由于std::set是基于有序集合实现的,它并不支持通过下标操作符([])直接访问元素。如果需要按索引访问元素,可以使用其他容器类型,如std::vector。
- 内存开销相对较大:由于红黑树的特性,std::set容器在内存使用方面可能比其他容器类型更占用空间。
🚨🚨注意:
- std::set中的元素是有序存储的,因此插入、删除操作的时间复杂度为O(logN),查找操作的时间复杂度也为O(logN),其中N为std::set中元素的个数。
- 使用std::set需要包含 头文件,并使用 std::set 关键字声明一个std::set对象。
2. std::set的使用
- 基本使用
#include #include int main() { std::set mySet; // 插入元素 mySet.insert(10); mySet.insert(5); mySet.insert(8); // 遍历元素 for (const auto& elem : mySet) { std::cout std::cout std::cout std::multiset std::cout std::cout
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。