C ++ std :: set为什么它是关联的?

时间:2013-04-02 10:00:43

标签: c++ stl set

为什么将std::set定义为关联容器?

我的意思是std::map是一个关联容器,因为它将一个值映射到一个键,但为什么它是一个集合?

2 个答案:

答案 0 :(得分:4)

23.4.6.1类模板集概述[set.overview]

  

set满足[..]关联的所有要求   容器(23.2.4)[...]

因为它满足了作为关联容器的所有前提条件,这些条件在23.2.4.中描述,并不像“将键映射到值”那么简单。

第二段甚至强调了这一点(或者更确切地说,突出显示它实际上是mapmultimap具有关联容器的附加功能):

23.2.4关联容器[associative.reqmts]

  

2)每个关联容器都在Key上进行参数化和一个排序关系比较引发一个严格的   关键元素的弱排序(25.4)。另外,map和multimap将任意类型T与之关联   钥匙。 Compare类型的对象称为容器的比较对象。

完整的段落太大而无法在此重现。

答案 1 :(得分:2)

reference at cplusplus.com

在一个集合中,键是值,它必须是唯一的。

编辑:

“关联容器中的元素由其键引用,而不是它们在容器中的绝对位置。”