Можно ли изменить компаратор C ++ std :: set?

У меня есть набор данных, который в некоторых случаях мне нужно отсортировать одним способом, а в некоторых - другим. Например, предположим, что набор данных представляет собой набор строк {"abc", "dfg", ...}. Иногда мне нужно отсортировать их в алфавитном порядке, а иногда сравнивать их длину.

Первоначально я использовал std :: set в качестве контейнера моих данных и реализовал 2 компаратора, надеясь, что я смогу изменить компаратор набора на лету, потому что данные огромны, и копировать их из один набор в другой .. Я просто хочу отсортировать его, время от времени используя разные компараторы. Возможно ли это или как это сделать?

5
задан blurrcat 15 October 2011 в 12:29
поделиться