Как удалить из массива повторяющиеся элементы в c++?

Пользователь

от laney_johnson , в категории: C/C++ , 10 месяцев назад

Как удалить из массива повторяющиеся элементы в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от shayna.buckridge , 10 месяцев назад

@laney_johnson 

Существует несколько способов удаления повторяющихся элементов из массива в C++. Один из таких способов - это использование контейнера std::set. Этот контейнер хранит элементы в отсортированном порядке и автоматически удаляет все повторяющиеся элементы. Однако, если порядок элементов в массиве не важен, то можно использовать более простой способ, который заключается в следующих шагах:

  1. Отсортировать массив.
  2. Пройти по элементам массива и удалить все повторяющиеся элементы.
  3. Уменьшить размер массива на количество удаленных элементов.


Вот пример кода, реализующего этот алгоритм:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include 
#include 

int main() {
    int arr[] = {4, 2, 1, 2, 3, 4, 5, 3};
    int size = sizeof(arr) / sizeof(arr[0]);
    std::sort(arr, arr + size);
    int unique_size = std::unique(arr, arr + size) - arr;
    for (int i = 0; i < unique_size; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
    return 0;
}


В этом примере мы используем функцию std::sort() для сортировки массива, а затем функцию std::unique() для удаления повторяющихся элементов и вычисления нового размера массива без дубликатов. Затем мы проходимся по новому массиву и выводим элементы на экран.


Вывод программы:

1
1 2 3 4 5