【发布时间】:2016-08-04 13:33:10
【问题描述】:
这是我的问题:我有一个std::vector<std::unordered_set<int>>。其中一些无序集是相等的,但顺序不同(我知道在 unordered_set 中顺序是不明确的)。要删除重复项(在数学意义上的集合,例如 {1,3,2} == {3,2,1}),我考虑过使用std::unique(),但这不起作用。经过搜索,我什至注意到向量中的数据需要排序,这在这种情况下没有意义。是否有删除std::vector<std::unordered_set<int>> 中重复项的功能?我可以自己做我只是想知道我是否错过了 stl 中的某些内容。另外,如果您知道如何使用不同的容器解决此问题,请告诉我。效率在这里不是一个大问题,在这种情况下,该向量中的元素不超过 200 个。
TLDR;如何删除std::vector<std::unordered_set<int>> 中的重复项?
【问题讨论】:
-
您使用
unordered_set而非set是否有原因?如果您使用set,则包含相同元素的两个集合将具有相同的顺序。 -
您可以在 O(n^2) 时间内通过比较(为了相等)每个数组元素与其他数组元素来删除重复项。
标签: c++ c++11 data-structures stl