C ++中列表和多集之间的区别

时间:2018-04-27 14:23:25

标签: c++ list data-structures stl multiset

在C ++中:

  • 列表是一个可以按顺序包含非唯一值的集合

  • multiset是一个可以按顺序包含非唯一元素的集合

两者之间的具体区别是什么?我为什么要使用另一个呢?

我尝试在线查找此信息,但大多数参考文献(例如cplusplus.com)以不同的方式讨论这两个容器,因此差异不明显。

4 个答案:

答案 0 :(得分:4)

来自multiset

  

std::multiset是一个包含已排序的关联容器   一组对象

     

搜索,插入和删除操作具有对数复杂性。

来自list

  

std::list是一个容器,支持常量时间从容器中的任何位置插入和删除元素

     

快速随机访问支持

因此,如果您想要更快的搜索,请使用multiset

更快插入和删除:使用list

答案 1 :(得分:4)

最大的区别是std::list是链表,而std::multiset是树结构(通常是RB树)。这意味着std::list访问O(N) std::multiset O(logN) std::multiset {/}}} {/}}

这也意味着从begin()end()迭代std::list将为您提供排序数据,而迭代app.UseWebApi(httpConfiguration)将为您提供数据插入的顺序。

答案 2 :(得分:0)

不是那么简单,而是简短:
如果您需要多次查询按值搜索,请选择std::multiset.
否则std::list

答案 3 :(得分:0)

standard library中有不少容器,它们具有不同的属性,对访问,插入和删除元素的时机有影响。您应该从整个组中选择最适用于特定情况的一个。您对std::multisetstd::list的定义是人为的,没有任何意义。如果椅子和马都有腿,这并不意味着它们是相似的。