Помогите с кодом на с++(массив)

#include <iostream>
#include <conio.h>
#include <vector>
#include <algorithm>
using namespace std;
int
main()
{
int n;
cin >> n;
int* array = new int[n];
cout << "input: ";
for (int i = 0; i < n; i++)
{
    cin >> array[i];
}
for (int i = 0; i < n; i++)
{
    if (array[i] = array[i + 1]) 
    { 
        delete[] array[i]; // E0852 выражение должно представлять собой указатель на полный тип объекта 
    }
}
} 

Задание состоит в том, чтобы убрать одинаковые элементы массива. Не знаю как это реализовать(


Ответы (2 шт):

Автор решения: Harry

Убрать элементы массива - это, по сути, из массива в n элементов получить массив, в котором будет m элементов, отвечающих вашему критерию.

Т.е. примерно

sort(array,array+n);
int m = unique(array,array+n) - array;

Полностью:

int main()
{
    int n;
    cin >> n;
    int* array = new int[n];
    cout << "input: ";
    for (int i = 0; i < n; i++)
    {
        cin >> array[i];
    }

    sort(array,array+n);
    int m = unique(array,array+n) - array;

    for (int i = 0; i < m; i++)
    {
        cout << array[i] << " ";
    }
}

С vector было бы в определенном смысле проще...

→ Ссылка
Автор решения: Pavlo Khyzhniak

И условие на равенство это a[i]==a[i+1]. Для формирования коллекции уникальных значений можно или спец коллекцйию использовать типа множества, но у Вас видимо задачка на массивы, так и формируйте новый массив уникальных значений, используя два вложенных цикла, первый по исходному массиву, просмотреть все элементы, а вложенный цикл для занесения в массив уникальных значений , если там нет ни одного совпадения

int k=0;//количество найденных уникальных элементов,длинна массива b
for(int i=0...){bool flag_unique = true;
for(int j=0...)
if(a[i]==b[j]) {flag_unique=false;break;}
if(flag_unique) b[k++]=a[i];}
→ Ссылка