我熟悉标准库关联容器映射和序列容器映射。但是,我似乎无法理解一组的目的。在尝试理解std :: set online时,我遇到了以下声明
set是一个STL容器,用于存储值并允许轻松查找。 例如,您可能有一组字符串:
std::set<std::string> S;
您可以通过编写
添加新元素
S.insert("foo";.
一个集合可能不包含多个具有相同键的元素,所以 如果S已经包含字符串“foo”,则insert不会添加任何内容; 相反,它只是查找旧元素。返回值包括a 状态代码,指示是否插入了新元素
所以从上面的文字看来,我觉得set容器只存储密钥,而不像存储密钥和值的地图。如果这是真的,为什么它是一个关联容器而不是像地图一样的序列容器?
答案 0 :(得分:0)
您可以将其视为键和布尔值的关联,告知该键是否存在于该组中。
答案 1 :(得分:0)
它实际上不是一个关联容器,因为它只存储值。它具有数学集的属性,如果你多次输入相同的值,你仍然只得到一个实例。这非常有用。假设您正在尝试获取文档中所有单词的列表;一个集合会很棒,因为它们会在文本中多次出现,但你只需要获得集合中每个单词中的一个。