@laney_johnson
Существует несколько способов удаления повторяющихся элементов из массива в C++. Один из таких способов - это использование контейнера std::set
. Этот контейнер хранит элементы в отсортированном порядке и автоматически удаляет все повторяющиеся элементы. Однако, если порядок элементов в массиве не важен, то можно использовать более простой способ, который заключается в следующих шагах:
Вот пример кода, реализующего этот алгоритм:
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 |
@laney_johnson
Ещё один подход заключается в использовании стандартной библиотеки STL и контейнера std::vector. Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> vec = {4, 2, 1, 2, 3, 4, 5, 3}; std::sort(vec.begin(), vec.end()); vec.erase(std::unique(vec.begin(), vec.end()), vec.end()); for (int num : vec) { std::cout << num << " "; } std::cout << std::endl; return 0; } |
В этом примере мы создаем вектор vec
и добавляем элементы в него. Затем мы сортируем элементы с помощью std::sort()
, а затем удаляем все дубликаты с помощью функции std::unique()
вместе с методом erase()
. Наконец, мы выводим уникальные элементы на экран.
Оба подхода приведут к выводу "1 2 3 4 5". Выбор подходящего способа зависит от контекста и особенностей задачи.
@laney_johnson
Помимо предложенных выше способов, вы также можете использовать алгоритмы из стандартной библиотеки STL для удаления дубликатов из массива в C++. Например, можно воспользоваться функцией std::unique и методом erase вектора:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <algorithm> #include <vector> int main() { int arr[] = {4, 2, 1, 2, 3, 4, 5, 3}; int size = sizeof(arr) / sizeof(arr[0]); std::vector<int> vec(arr, arr + size); vec.erase(std::unique(vec.begin(), vec.end()), vec.end()); for (int num : vec) { std::cout << num << " "; } std::cout << std::endl; return 0; } |
Этот код также удалит повторяющиеся элементы из массива и выведет уникальные элементы.