C++ STL Set2025 年 8 月 29 日 | 阅读 9 分钟 在 C++ 中,set 代表了基本的数据结构,它将唯一的元素按某种排序顺序排列并存储起来。set 被称为关联容器,而唯一的已排序元素被称为已排序键。我们可以插入或删除这些键,但不能修改它们。 默认情况下,set 遵循升序来排序键。set 是 C++ 中可用的 标准模板库 (STL) 的一部分,在 STL 中,set 类提供了有用的组件,可以提高 set 操作的效率。由于 set 使用默认的排序顺序来处理键,并且不使用索引机制,因此我们无法通过其索引号访问这些键。 语法它具有以下语法: 参数
Set 的声明和初始化在 C++ 中,我们可以使用 <set> 头文件声明 set,并使用 std::set 容器进行初始化。 语法 它具有以下语法: C++ Set 的声明和初始化示例 让我们以一个例子来说明如何在 C++ 中声明和初始化一个 set。 示例编译并运行输出 3 6 7 8 9 说明 在这个例子中,我们创建了一个名为 val 的整数 set,并用值 {8, 6, 7, 3, 9} 初始化。之后,set 会自动按排序顺序存储元素并删除任何重复项。for 循环以升序打印每个元素。 Set 的操作虽然在 C++ 中可以对 set 执行多种操作。其中一些如下: 1) 插入元素在 C++ 中,insert() 函数用于在 set 中插入元素。insert() 或 emplace() 操作用于插入元素,如果我们尝试插入一个已存在的元素到 set 中,它将不会被插入。此外,我们不能指定插入位置,因为它会在排序时自动处理。 C++ 插入元素示例 让我们以一个例子来说明如何在 C++ set 中插入元素。 示例编译并运行输出 1 3 4 5 7 8 9 说明 在这个例子中,我们创建了一个名为 a 的 set 并用 {1, 3, 5} 初始化,然后使用 insert() 和 emplace() 添加了额外的元素。之后,set 存储所有元素并保持排序和唯一性,因此输出以升序打印元素。 2) 访问元素在 C++ set 中,我们不能直接使用索引访问元素。begin() 和 end() 迭代器用于按位置访问元素。除了这些,还可以使用 next() 和 advance() 方法来访问 set 元素。 C++ 访问元素示例 让我们以一个例子来说明如何在 C++ set 中访问元素。 示例编译并运行输出 1 5 说明 在这个例子中,我们初始化了一个整数 set 并使用迭代器访问元素。begin() 函数返回第一个(最小)元素,next (val1, 2) 函数向前移动两个位置以访问排序后的第三个元素。 3) 查找元素在 C++ 中,find() 函数用于从 set 中查找元素。find() 函数支持按值快速搜索操作,如果搜索到的元素存在于 set 中,它将返回该值,否则返回 end() 迭代器。 C++ 查找元素示例 让我们以一个例子来说明如何在 C++ set 中查找元素。 示例编译并运行输出 8 说明 在此示例中,我们演示了如何使用 find() 函数在 set 中搜索元素。它会在 set 中查找元素 8,如果找到则打印它;否则,它会显示一条消息,表明该元素不存在。 4) 遍历元素在 C++ 中,begin() 和 end() 迭代器与基于范围的 for 循环一起用于遍历或迭代 set。 C++ 遍历元素示例 让我们以一个例子来说明如何在 C++ set 中遍历元素。 示例编译并运行输出 2 3 4 5 7 8 说明 在此示例中,我们使用 set<int> 来存储唯一的整数并保持排序。之后,它使用迭代器(val)遍历 set 并打印每个元素。 5) 删除元素在 C++ 中,erase() 方法用于按值或按位置从 set 中删除元素。 C++ 删除元素示例 让我们以一个例子来说明如何在 C++ set 中删除元素。 示例编译并运行输出 3 5 6 7 9 说明 在此示例中,我们演示了如何从 set 中删除元素。之后,它通过值删除元素 9,并通过迭代器删除第一个元素。最后,它以排序顺序打印剩余的元素,因为 set 会自动维护升序。 基本操作的时间复杂度基本操作的时间复杂度如下:
成员函数以下是 C++ set 中所有成员函数的列表 构造函数/析构函数给定的表格显示了 C++ Set 中使用的几个构造函数/析构函数。
迭代器给定的表格显示了 C++ Set 中使用的几个迭代器函数。
容量给定的表格显示了 C++ Set 中使用的几个容量函数。
修饰符给定的表格显示了 C++ Set 中使用的几个修改器函数。
观察器给定的表格显示了 C++ Set 中使用的几个观察者函数。
操作给定的表格显示了 C++ Set 中执行的几个操作。
分配器给定的表格显示了 C++ Set 中使用的分配器函数。
非成员重载函数给定的表格显示了 C++ Set 中使用的几个非成员重载函数。
Set 的类型C++ 中有两种 set,它们是: 1) 有序 Set 在 C++ 中,在存储元素时遵守排序顺序的 set 被称为有序 Set。 2) 无序 Set 在 C++ 中,以任意顺序存储元素的 set 被称为无序 Set。 有序 Set 与无序 Set 的区别C++ 中有序 Set 和无序 Set 之间的几点区别如下:
C++ Set 选择题1) 在 C++ 中使用 std::set 容器需要以下哪个头文件?
答案: c) < set > 2) 在 C++ 的 std::set 中插入元素的时间复杂度是多少?
答案: d) O (log n) 3) 选择用值初始化 std::set 的正确语法。
答案: d) std :: set <int> s = { 1, 2, 2, 3 }; 4) C++ 中 std::set 的 insert() 方法的返回类型是什么?
答案: a) Pair <iterator, bool> 5) 关于 std:: set 的迭代器,以下哪个陈述是正确的?
答案: b) 它们指向排序顺序的元素 下一个主题C++ Bitset |
在 C++ 中,队列代表基本数据结构,它们根据先进先出(FIFO)逻辑运行。C++ 的标准模板库(STL)通过其现成的组件提供了一个队列类,这些组件可提高队列操作的效率。队列是一种线性数据结构,它通过队列处理元素……
11 分钟阅读
s 在 C++ 中,vector 是标准模板库(STL)的一部分。它们是动态数组,在添加或删除元素时可以自动调整大小。与具有固定大小的数组不同,vector 提供了广泛的灵活性和底层函数,这些函数……
11 分钟阅读
函数 C++ 中,标准模板库 (STL) 在 <<algorithm> 头文件中提供了强大的底层函数集合。这些函数有助于对数组、向量、列表和其他容器等序列执行各种操作。算法函数是通用的,并且操作迭代器,...
阅读 24 分钟
在 C++ 中,map 是 STL(标准模板库)的一部分。Map 是关联容器,它们存储排序的键值对,其中每个键都是唯一的,可以插入或删除,但不能修改。与键相关联的值可以更改。语法是……
阅读 13 分钟
在 C++ 中,priority_queue 是 STL 中的一个派生容器,它只考虑优先级最高的元素。队列遵循 FIFO 原则,而 priority_queue 根据优先级弹出元素,即最高优先级的元素首先弹出。它类似于……
阅读 10 分钟
在 C++ 中,std::list 是一个序列容器,它允许元素的非连续存储。它实现为双向链表,其中每个元素包含前一个和后一个列表元素的地址。它允许我们将数据存储在……
阅读 15 分钟
在 C++ 中,deque(双端队列)是一种队列,其中可以在队列的前端和后端添加和删除元素。它支持 FIFO 和 LIFO 操作,这比队列提供了更大的灵活性。在 C++ 中,STL deque 是一个序列容器,它……
11 分钟阅读
教程 编译器 程序 面向对象编程 STL 面试题 C++ STL (标准模板库) 在 C++ 中,标准模板库 (STL) 是一组强大的模板类和函数,提供了通用的数据...
阅读 13 分钟
在 C++ 中,multimap 是 C++ STL(标准模板库)的一部分。Multimap 是像 map 一样的关联容器,它们存储排序的键值对,但与只存储唯一键的 map 不同,multimap 可以有重复的键。默认情况下,它使用 (<) 运算符进行比较……
阅读 13 分钟
在 C++ 中,stack 是一种线性数据结构,它遵循后进先出(LIFO)原则执行操作。这意味着最后添加的元素将首先被删除,而最后添加的元素最后被删除。在 C++ 中,STL 提供了一个……
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India