C++ 关联容器

2024 年 8 月 28 日 | 3 分钟阅读

C++ 标准库提供了各种高效的容器。这些容器是各种存储数据结构的简单模式版本。其他版本,例如标准库中基于模板的算法和迭代器实现,也可用。但是,容器仅用于存储项目。容器必须是模板化的才能实现模块化。这使得容器能够容纳几乎所有数据类型的对象。

每个容器都有一组成员函数,其中大多数共享这些函数的相似原型子集。这使得编码人员能够快速找出函数名所提供的内容并理解如何使用它们,即使容器类型发生变化,这对于编码人员来说也是一个显著的优势。这里只考虑有序关联容器。

C++ 为我们提供了多种多样的容器,每种容器都有其独特的应用。关联容器是 C++ 容器的一种类型。在本节结束时,您应该理解为什么它们被称为“关联”容器。

在 C++ 中,关联容器存储“排序数据”,与其他容器类型不同。因此,搜索和访问信息要快得多。但是,这也意味着输入数据将花费更多时间(将其放置在正确的位置)。

C++ 中的所有容器类型都是类模板,这意味着它们可以存储各种数据类型。此外,它们使用相同的声明机制,使得理解、记忆和操作各种容器类型变得简单。

设置容器

C++ Set 容器与其他关联容器的区别在于它包含“唯一且排序”的数据。通过“唯一”,我们意味着此容器中没有两个数据元素是相同的。任何输入的冗余都将很快被消除。

下面提供了一个简短的代码示例来演示 Set 容器的运行。

C++ 程序

输出

OUTPUT: 5
0
1
2
3
4

具有多个 Set 的容器

除了一个例外,Multi-Set 与 Set 容器几乎相同。与 Set 容器相反,Multi-set 容器允许将元素的副本保存在其容器中。

除此之外,您在 Set 中应用的操作也与 Multi-Set 兼容。

Map 容器

Map 容器与其他关联容器不同,因为它将数据存储为键值对。键类似于值的标识功能,它用于从 Map 中检索和获取值。凭据必须是唯一的,但值可能不是。

如果您熟悉 Python 中的字典,那么 C++ 中的 Map 非常相似。

这里有一些使用基本 Map 容器方法的代码。

C++ 程序

输出

Key: 1  Value: Grapes
Key: 2  Value: Guava
Key: 3  Value: Watermelon

要将数据插入 Map,我们像 Set 容器一样应用 insert() 和 pair。Insert() 输入数据,而 pair() 将其更改为合适的格式。

为了访问它,我们使用迭代器和 for 循环遍历 Map 中的所有键值对。第一个属性用于返回键,而第二个属性用于获取值。由于迭代器是一个引用,我们需要使用 ->。

Multi-Map 容器

Multi-Map 类似于 Map,但有一个例外。键不要求是唯一的;它们可能是彼此的副本。此外,这些重复键的值必须是不同的。简而言之,键或值必须是不同的。Multi-Map 不能包含两个相同的键值对。

所有其他功能都与标准 Map 类似,除了声明中的细微差别。