У меня есть массив целых чисел, в котором мне нужно удалить дубликаты, сохраняя при этом порядок первого вхождения каждого целого числа. Я вижу, как это делается, но представьте себе, что лучше использовать алгоритмы STL лучше? Вставка не входит в мой контроль, поэтому я не могу проверить дубликаты перед вставкой.
int unsortedRemoveDuplicates(std::vector<int> &numbers) {
std::set<int> uniqueNumbers;
std::vector<int>::iterator allItr = numbers.begin();
std::vector<int>::iterator unique = allItr;
std::vector<int>::iterator endItr = numbers.end();
for (; allItr != endItr; ++allItr) {
const bool isUnique = uniqueNumbers.insert(*allItr).second;
if (isUnique) {
*unique = *allItr;
++unique;
}
}
const int duplicates = endItr - unique;
numbers.erase(unique, endItr);
return duplicates;
}
Как это можно сделать с использованием алгоритмов STL?