与标准关联容器集和向量混淆

时间:2013-08-04 19:29:26

标签: c++ map set

我熟悉标准库关联容器映射和序列容器映射。但是,我似乎无法理解一组的目的。在尝试理解std :: set online时,我遇到了以下声明

  

set是一个STL容器,用于存储值并允许轻松查找。   例如,您可能有一组字符串:

std::set<std::string> S;
  

您可以通过编写

添加新元素
 S.insert("foo";.
  

一个集合可能不包含多个具有相同键的元素,所以   如果S已经包含字符串“foo”,则insert不会添加任何内容;   相反,它只是查找旧元素。返回值包括a   状态代码,指示是否插入了新元素

所以从上面的文字看来,我觉得set容器只存储密钥,而不像存储密钥和值的地图。如果这是真的,为什么它是一个关联容器而不是像地图一样的序列容器?

2 个答案:

答案 0 :(得分:0)

您可以将其视为键和布尔值的关联,告知该键是否存在于该组中。

答案 1 :(得分:0)

它实际上不是一个关联容器,因为它只存储值。它具有数学集的属性,如果你多次输入相同的值,你仍然只得到一个实例。这非常有用。假设您正在尝试获取文档中所有单词的列表;一个集合会很棒,因为它们会在文本中多次出现,但你只需要获得集合中每个单词中的一个。