导入
概述
让我们从定义一些基本特征开始,讨论有序关联容器。
有序关联容器 std::map 和 std::multimap 将键与值关联起来。两者均定义在头文件 <map> 中。std::set 和 std::multiset 则需要包含头文件 <set>。
这四个有序容器都由其类型、分配器和比较函数参数化。容器对分配器和比较函数都有默认值,具体取决于类型。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。
在下一课中,我们将讨论键和值的特性。