0

我熟悉标准库关联容器映射和序列容器映射。但是我似乎无法理解集合的目的。在尝试在线理解 std::set 时,我遇到了以下语句

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

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

您可以通过编写添加新元素

 S.insert("foo";.

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

所以从上面的文字来看,在我看来,set 容器只存储键,而不像存储键和值的映射。如果这是真的,为什么它是关联容器而不是像 map 这样的序列容器?

4

2 回答 2

0

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

于 2013-08-04T19:34:56.333 回答
0

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

于 2013-08-04T19:33:26.997 回答