这是我的问题:我有一个std::vector<std::unordered_set<int>>
。其中一些无序集合是平等的但不是相同的顺序(我知道顺序在unordered_set中是不明确的)。要删除重复项(在集合的数学意义上,例如{1,3,2} == {3,2,1}),我想过使用std::unique()
,但这不起作用。搜索后,我甚至注意到矢量中的数据需要排序,这在这种情况下是没有意义的。是否有删除std::vector<std::unordered_set<int>>
中的重复项的功能?我可以自己做,我只想知道,如果我错过了一些事情。另外,如果你知道如何使用不同的容器来解决这个问题,那么让我知道。效率在这里不是一个大问题,在这种情况下,该矢量中不超过200个元素。在std :: vector上使用std :: unique()<std :: unordered_set <T>>
TLDR;如何删除std::vector<std::unordered_set<int>>
中的重复项?
是否有一个原因,你是'unordered_set'超过'set'?如果您使用'set',则包含相同元素的两个集合将具有相同的顺序。 – NathanOliver
通过比较(相等)每个数组元素与每个其他数组元素,您可以删除O(n^2)时间中的重复项。 –