У меня есть массив целых чисел, из которого мне нужно удалить дубликаты, сохраняя порядок первого появления каждого целого числа. Я вижу, как это делается, но представьте, что есть лучший способ лучше использовать алгоритмы 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?