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

C++ 与标准关联容器集和向量混淆,c++,map,set,C++,Map,Set,我熟悉标准库关联容器映射和序列容器映射。然而,我似乎无法理解一套的目的。在试图理解std::set online时,我遇到了以下语句 集合是存储值并允许轻松查找的STL容器。 例如,您可能有一组字符串: 一个集合不能包含多个具有相同键的元素,因此 如果S已经包含字符串“foo”,则insert不会添加任何内容; 相反,它只是查找旧元素。返回值包括 指示是否插入新元素的状态代码 因此,从上面的文本来看,set容器似乎只存储键,而不是存储键和值的映射。如果这是真的,为什么它是一个关联容器而不是像映射

我熟悉标准库关联容器映射和序列容器映射。然而,我似乎无法理解一套的目的。在试图理解std::set online时,我遇到了以下语句

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

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


因此,从上面的文本来看,set容器似乎只存储键,而不是存储键和值的映射。如果这是真的,为什么它是一个关联容器而不是像映射一样的序列容器?

您可以将其视为键和布尔值的关联,告诉它是否存在于集合中。

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

std::set<std::string> S;
 S.insert("foo";.