Массивы - это контейнеры фиксированного размера. Поэтому их расширение невозможно. Вы обходите это и копируете один массив в больший и получаете пространство позади старого конца, но это все.
Вы можете создать массив больше, чем вам нужно в данный момент, и запомнить, какие элементы пусты . Конечно, они никогда не бывают пустыми (они по крайней мере содержат нули), но это другая история.
Подобно массивам, существует много контейнеров, некоторые из которых могут расти, например контейнеры stl: списки, векторы, запросы, наборы и т. Д.
добавьте конструктор, чтобы установить i (просто чтобы дать вашему примеру прикосновение к реальному миру) к вашему примеру classex, например:
class classex {
public:
classex(int& v) : i(v) {}
private:
int i;
};
Пример для растущего контейнера выглядит следующим образом:
vector <classex> c; // c for container
// c is empty now. c.size() == 0
c.push_back(classex(1));
c.push_back(classex(2));
c.push_back(classex(3));
// c.size() == 3