@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;
}
|
Этот код также удалит повторяющиеся элементы из массива и выведет уникальные элементы.