C++ Multiset2025年6月6日 | 阅读 11 分钟 在 C++ 中,multiset 是 STL(标准模板库) 的一个重要组成部分。Multiset 是类似于 set 的关联容器,用于存储已排序的值(值本身就是类型 T 的键)。与存储唯一键的 Set 不同,Multiset 可以包含重复的键。默认情况下,它使用 < 运算符来比较多个键。Multiset 中的元素值可以插入或删除,但不能修改。 语法它具有以下语法: 在这个语法中,
声明和初始化在 C++ 中,我们可以用多种不同的方式初始化和声明 multiset,如下例所示: 示例编译并运行输出 Multiset elements: 10 10 20 20 30 40 说明 在此示例中,我们包含了所需的头文件,并创建了一个整数 multiset,该 multiset 已用一些重复值进行了初始化。之后,multiset 默认按顺序存储元素,并且也允许重复。 the for 循环 遍历 multiset 并打印所有元素,显示为升序。 C++ Multiset 的基本操作可以在 multiset 上执行多种操作。其中一些如下: 插入元素在 C++ 中,我们可以使用 insert() 方法 在 multiset 中插入元素。Multiset 会自动按照添加的顺序维护元素。 语法 它具有以下语法: C++ Multiset 插入元素的示例 让我们以一个例子来说明如何在 C++ 中向 multiset 插入元素。 示例编译并运行输出 Multiset elements: 10 10 20 30 说明 在此示例中,在 main() 函数中声明了一个 multiset<int> 类型的 number。使用 insert() 函数插入了元素 10、20、10 和 30。由于 multiset 允许重复并保持元素排序,输出将以升序打印元素,其中包括重复的 10。之后,for 循环迭代 multiset 并打印其每个值。 访问元素在 multiset 中,我们需要通过迭代器按位置访问元素。例如,如果我们想获取第 3 个元素,我们需要将 begin() 迭代器向前移动两个位置(通过递增)。我们还可以使用 next() 或 advance() 函数来代替递增或递减。 C++ Multiset 访问元素的示例 让我们以一个例子来说明如何在 C++ 中访问 multiset 中的元素。 示例编译并运行输出 Multiset elements: 10 10 20 30 40 说明 在此示例中,我们使用值 {40, 10, 30, 20, 10} 初始化了一个 multiset<int>。由于 multiset 按排序顺序存储元素并允许重复,因此元素会自动排列。之后,一个带有迭代器的 for 循环从 multiset 的开头到结尾,使用 *it 打印每个值。 查找元素在 C++ 中,multiset 通过 find() 成员函数支持快速按值查找操作。如果找到元素,find() 函数将返回指向该元素的迭代器;否则,它将返回 end() 迭代器。 语法 它具有以下语法: 在这里,我们可以通过使用 begin() 和 end() 迭代器轻松访问第一个和最后一个元素。 C++ Multiset 查找元素的示例 让我们以一个例子来说明如何在 C++ 中查找 multiset 中的元素。 示例编译并运行输出 Element 20 found in the multiset. 说明 在此示例中,我们创建了一个包含一些整数的 multiset,并尝试使用 find() 方法查找值 20。如果找到元素,它将打印一条消息,指出元素已找到;否则,未找到。因为 multiset 支持重复,所以 find() 函数将返回指向该值某个出现次数的迭代器。 遍历元素在 C++ 中,遍历与其他容器类似,multiset 可以通过使用基于范围的 for 循环或使用 begin() 和 end() 迭代器进行高效迭代。为了遍历具有相同键的所有元素,请使用 equal_range() 函数 返回的范围,而不是 begin() 和 end()。 C++ 遍历元素的示例 让我们举一个例子来演示如何在 C++ 中遍历元素。 示例编译并运行输出 Multiset elements: 10 20 30 40 50 说明 在此示例中,由于 multiset 按排序顺序存储元素,因此它们会自动排列为 {10, 20, 30, 40, 50}。之后,一个带有迭代器的 for 循环 从 begin() 到 end(),通过解引用每个迭代器来访问和打印值。 删除元素如果我们想从 multiset 中删除元素,我们可以使用 erase() 函数。它可以提供值或迭代器来调用。但是,如果提供了值,它会删除该值的所有实例。 C++ 删除元素的示例 让我们以一个例子来说明如何在 C++ multiset 中删除元素。 示例编译并运行输出 Multiset after deletion: 10 20 40 说明 在此示例中,我们创建了一个包含重复项的整数 multiset。它使用 find() 和 erase(it) 删除两个 20 中的一个,并使用 erase(30) 删除所有 30。最后,它以升序打印剩余的元素。 将 Multiset 按降序排序如果我们想按降序获取 multiset 元素,我们可以修改以下语法: C++ Multiset 按降序排序的示例 让我们以一个例子来说明如何在 C++ 中将 multiset 按降序排序。 示例编译并运行输出 Multiset in descending order: 40 30 20 20 10 说明 在此示例中,我们创建了一个带有自定义比较器 greater<int> 的 multiset,它按降序存储元素。它使用一些值初始化 multiset,并使用基于范围的循环打印它们。之后,输出将显示从高到低的排序元素。 使用 swap() 交换 Multiset在 C++ 中,交换两个 multiset 容器可以有效地交换它们的内容。 the swap() 函数 通过交换内部指针以恒定时间运行。 C++ 使用 Swap() 函数交换 Multiset 的示例 让我们以一个例子来说明如何在 C++ 中使用 swap() 函数交换 multiset。 示例编译并运行输出 Before swap: Set1: 10 20 30 Set2: 40 50 After swap: Set1: 40 50 Set2: 10 20 30 说明 在此示例中,我们初始化了两个具有不同值的 multiset,打印了它们,然后使用 swap() 交换了它们。交换后,它们再次打印出来,以证明它们的内容已被交换。 C++ Multiset empty() 和 size() 方法在 C++ 中,我们可以使用容量方法 empty() 和 size() 来检查 multiset 是否为空以及它的大小。 empty() 方法返回 1 和 0 值。
C++ Multiset empty() 和 size() 方法使用示例让我们以一个例子来说明如何在 C++ 中使用 empty() 和 size() 函数来使用 multiset。 示例编译并运行输出 Multiset contents before clear: 5 15 15 25 35 35 35 Is multiset empty? No Multiset size: 7 Multiset contents after clear: Is multiset empty? Yes Multiset size: 0 说明 在此示例中,我们创建了一个包含一些重复值的 multiset,打印其内容,检查并显示它是否为空以及其大小,并使用 clear() 清除所有元素。清除后,它再次打印 multiset 并再次检查 empty() 和 size() 以验证它现在为空。 成员函数以下是 multiset 所有成员函数的列表 构造函数/析构函数下表显示了 C++ Multiset 中使用的几个构造函数/析构函数。
迭代器下表显示了 C++ Multiset 中使用的几个迭代器函数。
容量下表显示了 C++ Multiset 中使用的几个容量函数。
修饰符下表显示了 C++ Multiset 中使用的几个修改器函数。
观察器下表显示了 C++ Multiset 中使用的几个修改器函数。
操作下表显示了 C++ Multiset 中使用的几个操作。
分配器下表显示了 C++ Multiset 中使用的几个分配函数。
非成员重载函数下表显示了 C++ Multiset 中使用的几个非成员重载函数。
结论总之,C++ STL 包含 multisets。Multisets 是已排序的 Set 容器,用于存储已排序的值(值是类型 T 的键)。与 C++ sets 不同,multisets 可以包含不同的冗余键。Multiset 默认允许我们使用运算符比较键。multiset 的项的值可以插入或删除,但不能修改。 C++ STL Multiset 选择题1) 关于 C++ 中的 multiset,以下哪项是正确的?
答案: c) 它允许重复值 2) 以下哪个函数用于在 multiset 中查找元素?
答案: d) find() 3) erase(value) 在 multiset 中做什么?
答案: b) 删除该值的所有实例 4) 关于 multiset 中的元素修改,以下哪个陈述是正确的?
答案: a) 元素插入后不能修改 5) 如果我们在 C++ 中对两个 multiset 使用 swap() 函数会发生什么?
答案: c) 内容将被交换 下一个主题C++ multiset |
C++ multiset find() C++ 用于查找具有给定值 val 的元素。如果找到元素,它将返回一个指向该元素的迭代器,否则,它将返回一个指向 multiset 末尾的迭代器,即 multiset::end()。语法迭代器...
阅读 3 分钟
C++ Multiset equal_range() C++ Multiset equal_range() 函数用于返回容器中所有等于 val 的元素范围的边界。如果 val 在容器中没有匹配值,则返回的范围长度将为 0,并且两个迭代器...
5 分钟阅读
C++ multiset 中 operator= 有以下三种用法:operator= 用于通过替换其旧内容(或复制内容)来为 multiset 容器分配新内容,并在必要时修改大小。operator= 用于移动一个 multiset 容器的内容...
阅读 4 分钟
C++ multiset key_comp() C++ Multiset key_comp() 函数用于返回 multiset 容器用于比较键的比较对象的副本。该比较对象可用于比较容器中两个元素的键值。此比较对象已给定...
5 分钟阅读
C++ std operator>= C++ Multiset Operator>= 是 C++ 中 multiset 的一个非成员重载函数。此函数用于检查第一个 multiset 是否大于或等于另一个。注意:Operator >= 顺序比较 multiset 的元素,比较将停止在...
5 分钟阅读
C++ Multiset operator!= C++ Multiset operator!= 是 C++ 语言中 multiset 的一个非成员重载函数。此函数用于检查两个 multiset 是否相等。注意: multiset 对象之间的比较基于元素的成对比较。两个 multiset 是...
阅读 4 分钟
C++ multiset swap() C++ Multiset swap() 函数用于交换(或交换)两个 multiset 的内容,但两个 multiset 必须是同一类型,尽管大小可能不同。语法 void swap (multiset& x); 参数 x:要与之交换内容的 multiset 容器。返回值 None 复杂度 常数。迭代器有效性 所有引用、迭代器和...
阅读 4 分钟
C++ multiset erase() C++ Multi 用于从 multiset 容器中删除与给定键关联的单个元素或一系列元素([first, last))。因此,大小将减少已删除元素的数量。语法 void erase (iterator position); ...
阅读 6 分钟
C++ multiset insert() C++ Multiset insert() 函数用于在 multiset 中插入新元素或一系列元素。语法 单个元素 (1) iterator insert (const value_type& val); //直到 C++ 11 带提示 (2) iterator insert (iterator position, const value_type& val); ...
阅读 4 分钟
C++ Multiset lower_bound() C++ Multiset lower_bound() 函数用于返回 multiset 容器中等于传递给参数的 val 的键的迭代器。如果 val 不存在于 multiset 容器中,它将返回一个指向紧邻...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India