Logo
Section 1 / 5

概述

让我们通过定义一些简单的特性,开始讨论有序关联容器。

导入

概述

让我们通过定义一些简单的特性,开始讨论有序关联容器。

有序关联容器 std::map 和 std::multimap 将键与值进行关联。这两个类模板都定义在头文件 <map> 中。而 std::set 与 std::multiset 则需要包含头文件 <set>。

这四种有序容器均通过其元素类型、分配器(allocator)以及比较函数进行模板参数化。容器对分配器和比较函数提供了默认参数,这些默认值依赖于元素类型。通过观察 std::map 和 std::set 的声明,可以清楚地看出这一点。

1template < class Key, class Val, class Comp = less<Key>, 2 class Alloc = allocator<pair<const Key, Val> > > 3class map; 4 5template < class T, class Comp = less<T>, 6 class Alloc = allocator<T> > 7class set;

从上述两个关联容器的声明可以看出,std::map 具有关联的值。键和值共同用于默认分配器:allocator<pair<const Key, Val>>。稍加思考,还可以从中得出更多信息:std::map 内部存储的是 std::pair<const Key, Val> 类型的元素对。其中,排序准则仅依赖于键(即 less<Key>),而与值 Val 无关。以上特性同样适用于 std::multimap 和 std::multiset。

关联式容器

键和值