【问题标题】:why does mutiset don't act like set为什么 mutiset 不像 set
【发布时间】:2021-01-03 15:21:28
【问题描述】:

为什么multiset是一个set,而一个set只能包含不同的元素,而multiset可以包含相同的元素?它可以被称为sortedArraysortedList。即使它只是想要一个排序的“集合”,为什么它是一个集合?

【问题讨论】:

  • 因为计算机科学家喜欢滥用数学术语。另一个例子是调用模数运算符 %。
  • 询问向 C++ 标准委员会提出建议的人。
  • Multiset 不是集合,它是多重集,它模拟了多重集的数学概念:en.wikipedia.org/wiki/Multiset
  • FWIW、sortedArraysortedList 不传达相同的保证。数组具有多重集没有的连续存储,虽然可以对列表进行二进制搜索,但您仍然有线性时间,因为您无法随机访问列表中的节点。

标签: c++ multiset


【解决方案1】:

为什么multiset是一个集合

在数学中有两个不同的概念setmultiset。标准库有两个对这些概念进行建模的容器:std::setstd::multiset。这些概念不相同,因此容器名称也不同,因为它们对不同的数学概念进行建模。

【讨论】:

    【解决方案2】:

    为什么 multiset 是一个集合 [...]

    不是。 “set”这个词确实出现在“multiset”中,但这并不会使multiset成为一个集合。多重集是一个集合的泛化,它本身不一定是一个集合。这种语言设置类似于hypergraph,它是一个图的概括,但不一定是一个图;和hyperplane,它是一个平面的概括,但不一定是一个平面。

    一个不太数学的例子是penultimate,它不是“终极”,或者任何其他带有改变词根含义的前缀的词。

    也许“蝴蝶”和“蜻蜓”是恰当的例子。苍蝇也不是,尽管两个名字中都出现了“苍蝇”这个词。 (就此而言,既不是黄油也不是龙。)有时一个名字只是一个名字。

    【讨论】:

      猜你喜欢
      • 2012-09-14
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多