У меня есть массив имен, но мне нужны только уникальные. Я использую std::set
так, чтобы он очищал дубликат. Но мне нужно, чтобы имя отображалось в том же порядке, что и вход. Это означает, что, если мой вход:Как остановить std :: set от сортировки?
Mary
Mary
John
John
John
Apple
Apple
Apple
[Изменить]: После проверки комментариев/ответов, я хочу внимание, что каждого имя появляется в группе и не обнаруживается позже на входе. См. Пример, Mary
появляется два раза, и это так. Он не появляется снова позже [/ Edit]
Я хочу, чтобы мой выход будет:.
Mary
John
Apple
Использование std::set
, я получаю отсортированный одно:
Apple
John
Mary
я узнаю есть unordered_set
(от {cplusplus.com}). Это еще раз не сохранить порядок ввода.
Вопрос:
- Есть ли способ, чтобы остановить
std::set
от сортировки? - Я читал, что {one can write own's sorting method for
std::set
}. Теперь, если я не могу остановить сортировкуset
, как насчет написания моего собственного метода сортировки, но всегда возвращайте первый элемент ввода как самый маленький? (Если я могу получить через подробности о том, как это сделать ...) - Или есть ли еще в
std
, который может свести группу строк в уникальный набор, но не сортирует его?
Спасибо!
использовать вектор или deque –
1. № 2. не работает. 3. 'std :: vector', проверьте наличие дубликатов перед вставкой новых элементов. – juanchopanza
Все ваши повторяющиеся элементы гарантированно последовательны, как в вашем примере ввода? Если это так, используйте ['std :: unique'] (http://en.cppreference.com/w/cpp/algorithm/unique) –