Вы не можете использовать realloc
для массива std::string
объектов, потому что realloc
перемещает объекты с помощью битового копирования, и это не разрешено для общих объектов.
Стандартный класс std::vector
являетсяуниверсальный контейнер для объектов, который правильно перемещает и копирует объекты (используя конструкторы копирования, назначения и аналогичные методы) и может изменять его размер, например, с помощью метода resize
.Вся необходимая память распределяется и освобождается автоматически по мере необходимости.
Например, std::vector
вы можете написать код, например ...
std::vector<std::string> v; // An empty vector
v.resize(10); // Now size is 10 elements (all empty strings "")
v[0] = "Hello"; // First element is now the string "Hello"
v[1] = "world."; // Second element is now the string "world."
v.resize(2); // Now v.size() is 2
v.push_back("How's going"); // Now the size is 3 and third element is filled.
Сделайте себе одолжение и возьмите хорошая книга по С ++ , читая ее от корки до корки.C ++ - мощный, но сложный язык, и если вы попытаетесь выучить его, экспериментируя с компилятором, вы совершите ужасную ошибку по многим причинам.