各整数の最初の出現順序を維持しながら、重複を削除する必要がある整数の配列があります。私はそれをこのように行うことを見ることができますが、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アルゴリズムを使用してこれをどのように行うことができますか?