Вот моя проблема: у меня есть std::vector<std::unordered_set<int>>
. Некоторые из этих неупорядоченных множеств равны, но не в том же порядке (я знаю, что порядок неоднозначен в unordered_set). Чтобы удалить дубликаты (в математическом смысле набора, например {1,3,2} == {3,2,1}), я подумал об использовании std::unique()
, но это не сработает. После поиска я даже заметил, что данные в векторе нужно сортировать, что не имеет смысла в этом случае. Есть функция, которая удаляет дубликаты в std::vector<std::unordered_set<int>>
? Я мог бы сделать это сам, я просто хочу знать, пропустил ли я что-то в stl. Кроме того, если вы знаете, как решить эту проблему, используя разные контейнеры, сообщите мне об этом. Эффективность здесь не большая проблема, в этом контексте в этом векторе не более 200 элементов.Использование std :: unique() на std :: vector <std :: unordered_set <T>>
TLDR; Как удалить дубликаты в std::vector<std::unordered_set<int>>
?
Есть ли причина, вы используете 'unordered_set' над' set'? Если вы использовали 'set', два набора, содержащие одни и те же элементы, имели бы тот же порядок. – NathanOliver
Вы можете удалить дубликаты в O (n^2) раз, сравнив (для равенства) каждый элемент массива с каждым другим элементом массива. –