C++中的无序pair集合及示例
什么是pair?
C++中的utility库提供了pair容器。一个pair由两个数据元素或对象组成。
- 第一个元素被称为“first”,第二个元素被称为“second”,并且它们的顺序是固定的(first, second)。
- Pair用于将两个可能类型不同的值组合在一起。Pair提供了一种将两个异构对象存储为单个单元的方法。
- 可以对pair进行分配、复制和比较。在一个map或hash_map中分配的对象数组默认为“pair”,其中所有的“first”元素都是唯一键,与它们的“second”的值对象相关联。
- 要访问这些元素,我们使用变量名、点运算符和关键字first或second。
如何访问pair?
我们可以使用下面的代码片段中所解释的点(.)运算符来访问pair元素。
什么是无序集合?
无序集合是一种关联容器,与集合类似,但是在无序集合的情况下,元素不按任何特定顺序排列。无序集合可以像集合一样持有唯一的元素。无序集合内部使用哈希表实现,键被散列到哈希表的索引中。在无序集合中插入元素总是不可预测的或随机的。无序集合中的大部分操作时间复杂度为常数级别O(1),但在最坏情况下,时间复杂度可能上升到O(n)。
与无序集合相关的函数:
- insert(x) : 在无序集合容器中插入一个新元素“x”。
- begin() : 返回一个指向无序集合容器中第一个元素的迭代器。
- end() : 返回一个指向虚拟的结束元素旁边的元素的迭代器。
- count() : 计算无序集合容器中特定元素出现的次数。
- erase() : 删除单个元素或从起始到结束(不包括)范围内的一系列元素。
- size() : 返回无序集合容器中的元素数量。
- swap() : 交换两个无序集合容器的值。
- max_size() : 返回无序集合容器可以容纳的最大元素数量。
- empty() : 检查无序集合容器是否为空。
在实现复杂的数据结构时,无序对的集合很有用。本文重点介绍如何在C++中创建无序对集合。
无序对集合
无序对集合是一个无序集合,其中每个元素本身都是一个pair。默认情况下,C++不允许我们直接创建无序对集合,但可以向无序集合容器传递一个哈希函数。
语法:
**unordered_set <pair<dataType1, dataType2>, hashFunction> myUnorderedSet; **
这里,
dataType1: 一个数据类型。
dataType2: 另一个数据类型。
hashFunction: 一个哈希函数。
注意: dataType1和dataType2可以相似或不相似。
示例1: 下面是C++程序,演示一组无序的键值对的工作方式。
输出:
示例2: 下面是C++程序,演示一组无序的键值对的工作方式。
输出: