Вы не можете удалять элементы. Массив имеет фиксированный размер.
Однако вы можете притворяться, убирая их с пути и притворяясь, что их больше не существует.
Когда вы обнаружите «дубликат», переместите его в конец массива. (Возможно, вам придется перетасовать все последующие элементы вместе, чтобы освободить место для этого, или вы можете использовать некоторые изворотливые махинации, если вас не слишком заботит порядок).
Затем, если вы обнаружили x дубликатов в общей сложности из общего числа n значений, вам нужно будет только напечатать первые nx значения массив. Это «скрывает» дубликаты.
Они все еще там, в конце массива, но вам не нужно ничего с ними делать.
Давайте посмотрим на ваш набор данных:
Original: 1,3,5,4,5 (5 elements)
Reorganised: 1,3,5,4,5 (1 duplicate; therefore, 4 useful elements)
К сожалению, это не очень хороший демонстрационный пример, потому что единственным дублирующим значением было уже в конце набора данных!
Выбор случайного альтернативного набора данных:
Original: 1,1,3,4,5,6,5,8 (8 elements)
Reorganised: 1,3,4,5,6,8,1,5 (2 duplicates; therefore, 6 useful elements)
Кроме того, это "движение в конец" - это то, как std::remove
и друзья работают, и поэтому вам нужно сделать std::erase
, чтобы окончательно стереть элементы контейнера, содержащие "скрытые" значения.