我查看了各种文本。唯一得到的东西就是set是一个包含排序和独特键的关联容器。现在如果没有值使用键进行映射,那么集合中的关联在哪里。
有许多不同的思考方式,其中一些经常导致典型的鸡生蛋问题。
以 std::map
为例,按其接口规范,它是一个直观的关联容器。然而,您可以将 std::map
视为一组成对的 key:data
,比较函数仅考虑存储元素的 key
部分并忽略 data
部分。从那个角度来看,"set"(std::set
或 std::unordered_set
)可以被视为比 "map"(std::map
或 std::unordered_map
)更通用和更基本的数据结构。也就是说,"set" 的功能覆盖了典型的关联容器存储 key:data
对的功能。换句话说,"set" 是关联容器的父类,仅出于这个原因,它本身可以被视为一个关联容器。
key
和data
),这意味着“map”可以被视为比“set”更基本的数据结构。这就是我之前所提到的先有鸡还是先有蛋的情况。如果您认为集合是一种独立的数据结构,它不符合关联数据结构的定义,因为没有映射值。然而,当将集合视为映射的特殊情况时,映射(“关联”)值与键相同,它适合被称为关联容器。请注意,与集合相比,映射被认为是一种更主要的数据结构,因为可以使用映射来实现集合,但反之则不行。
void
吗? - Deduplicator