【发布时间】:2013-08-31 11:33:16
【问题描述】:
我基本上有两个带有无序元素的向量,只能检查它们是否相等。有没有像 std::equal 这样的标准算法来比较所有 n^2 对并检查一个向量的所有元素是否都在另一个向量中?
【问题讨论】:
-
在 O(nlogn) 中排序并在 O(n) 中进行比较?
-
这可能是
std::unordered_set的工作。 -
@DyP:只能检查是否相等的无序元素听起来无法排序。
-
@Jon 可能是。我不会想到无序容器支持
==和!=,但显然他们支持。最坏情况的复杂度是 O(n^2)(这就是为什么我没想到它会被支持),但在大多数情况下,您可能不会遇到最坏的情况。 -
@DavidRodríguez-dribeas 听起来是这样。另一方面,我认为我从未见过无法定义某种任意顺序的数据类型,这对于
sort来说已经足够了(即使它不符合任何逻辑顺序) .