Вы не можете удалить элемент массива с использованием стандартных массивов C++. Вместо этого используйте std::vector
.
Массив, который инициализирован new[]
, представляет собой буфер, указатель которого указывает на его первую ячейку памяти. В векторах и списках элементы связаны. Поэтому каждый элемент указывает на свой предыдущий и следующий элементы, что упрощает удаление или вставку элементов. Однако для этого требуется больше памяти.
Пример
// constructing vectors
#include <iostream>
#include <vector>
int main()
{
// constructors used in the same order as described above:
std::vector<int> first; // empty vector of ints
std::vector<int> second (4,100); // four ints with value 100
std::vector<int> third (second.begin(),second.end()); // iterating through second
std::vector<int> fourth (third); // a copy of third
// the iterator constructor can also be used to construct from arrays:
int myints[] = {16,2,77,29};
std::vector<int> fifth (myints, myints + sizeof(myints)/sizeof(int));
std::cout << "The contents of fifth are:";
for (std::vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
И только для разъяснения,
delete fruits[0]
будет удалить плод, который расположен на 0-й элемент массива, но это не приведет к удалению его из массива или сделать массив одним элементом короче.