Как удалить элемент из класса массива - PullRequest
0 голосов
/ 05 ноября 2018

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

array<int, 5> niz;

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


EDIT
так что размер массива не может быть изменен, поэтому я могу затем переместить два элемента в массиве?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

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

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

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

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

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

for( unsigned int i=0; i<dynamic_size; ++i ) printf( "%u: %d\n", i, myArray[i] );
0 голосов
/ 05 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...