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

У меня есть объявление массива

array<int, 5> niz;

Теперь мне нужно найти максимум в этом массиве и удалить его. Как добиться этого с помощью массива классов?


РЕДАКТИРОВАТЬ
поэтому размер массива не может быть изменен, поэтому я могу быстро выбрать два элемента в массиве?

Всего 2 ответа


Это невозможно. В std::array задано определенное количество элементов, определенное временем компиляции. Если вам нужен контейнер, который поддерживает изменение количества элементов, вы можете использовать, например, std::vector .


Хотя вы не можете удалить элемент из массива, вы можете переместить (путем замены) максимальный элемент в конец массива и сохранить динамический размер.

const unsigned int fixed_size=5;
unsigned int dynamic_size = fixed_size;
std::array<int, fixed_size> myArray;

И когда вы найдете max (позволит вам реализовать эту часть), замените его последним индексом в динамическом диапазоне. И уменьшите динамический размер.

std::swap( myArray[dynamic_size-1], myArray[max_index] );
--dynamic_size;

И это будет итерация по массиву, исключая элемент max.

for( unsigned int i=0; i<dynamic_size; ++i ) printf( "%u: %d
", i, myArray[i] );

Есть идеи?

10000