2013-08-04 18 views
0

我熟悉标准库关联容器映射和序列容器映射。但我似乎无法理解一套的目的。虽然试图了解std :: set在线我遇到以下声明与标准关联容器集合和向量相混淆

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

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

您可以通过编写

S.insert("foo";. 

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

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

回答

0

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

0

你可能会认为它是一个关键字和布尔值的关联,告诉关键是否存在于集合中。