Как удалить все копии элемента в массиве?
У меня есть векторный массив из n элементов, и я позволяю пользователям вводить n целых чисел. Теперь я хочу, чтобы мой массив содержал только различные целые числа. Другими словами, Я хочу, чтобы он удалил все копии целого числа так, чтобы в массиве осталось только одно вхождение каждого целого числа.
Если мой вектор p = {-1, 1, 4, 1, 4, 7, 3, 7, 7}
выход должен быть: p = {-1, 1, 3, 4, 7}
std::sort(p.begin(), p.end()); for (int i=1; p[i] == p[i+1]; i++){ do { p.erase(p.begin() + i+1); } while (p[i]==p[i+1]); }
Однако я не получаю должного результата. Может ли кто-нибудь предложить некоторые исправления в моем коде? Или даже предложить лучший способ кодирования на C++?
Что я уже пробовал:
Как вы можете видеть, я попытался отсортировать свой массив так, чтобы все копии целого числа располагались последовательно. Затем я стираю ближайший следующий элемент всякий раз, когда вижу два элемента одинакового значения.