這是我的問題:我有一個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)時間中的重複項。 –