Как удалить элемент массива?

195
19 апреля 2018, 12:01

Предположим есть массив - array[1000]. Нужно удалить элемент 400 и при этом сдвинуть массив с 401 на 400, 402 на 401 и т.д. Как это сделать одной командой без циклов?

Answer 1

Например, старый добрый std::move:

std::move(array + 401, array + 1000, array + 400);

array + 401, array + 1000 — это начало и конец (past-the-end) перемещаемых элементов, array + 400 — адрес, начиная с которого они теперь будут размещаться. std::move позволяет сдвигать влево перекрывающиеся диапазоны; для сдвига вправо существует std::move_backwards.

Answer 2

Не думаю, что это будет нуждаться комментариев...

*(std::remove(array, array + 1000, array[400])) = 0;
READ ALSO
Опечатка в книге Майерса. Правило 18

Опечатка в книге Майерса. Правило 18

Наткнулся у Майерса на такой код из правила

180
Декларация и реализация шаблона

Декларация и реализация шаблона

Потребовалось создать шаблон, делал все как обычно принято в C/C++, сначала декларацию в header файле, а потом и реализацию в cpp файле, разумеется...

218
Как объявить static переменную в классе?

Как объявить static переменную в классе?

Переменную объявил так:

172
Иерархия объектов в C++ [требует правки]

Иерархия объектов в C++ [требует правки]

Помогите создать иерархию объектов, которые содержат информацию о комплектации ПК

170