В C++, размер динамического массива типа string
можно расширить путем использования указателя на массив и функций new
и delete
, либо с использованием класса std::vector
.
Способ №1: Использование указателя на массив и функций new
и delete
:
1. Создайте указатель на массив типа string
. Например:
string* arr;
2. Инициализируйте указатель на массив, задав начальный размер:
int initialSize = 5; arr = new string[initialSize];
3. Для увеличения размера массива, создайте новый массив большего размера, скопируйте данные из старого массива в новый и освободите память старого массива. Например, для увеличения размера вдвое:
int newSize = initialSize * 2; string* newArr = new string[newSize]; for (int i = 0; i < initialSize; i++) { newArr[i] = arr[i]; } delete[] arr; arr = newArr;
Теперь массив arr
имеет увеличенный размер и содержит копии всех предыдущих элементов.
4. После использования массива, не забудьте освободить выделенную память:
delete[] arr;
Способ №2: Использование класса std::vector
:
1. Включите заголовочный файл <vector>
:
#include <vector>
2. Создайте объект std::vector
типа string
и задайте начальный размер:
int initialSize = 5; std::vector<string> vec(initialSize);
3. Чтобы увеличить размер вектора, вы можете использовать метод resize
:
int newSize = initialSize * 2; vec.resize(newSize);
Теперь вектор vec
имеет увеличенный размер. Новые элементы будут инициализированы значениями по умолчанию для типа string
.
4. Как и в случае с массивом, после использования вектора освободите выделенную память не требуется. Деструктор объекта std::vector
автоматически освободит занятую память при его выходе из области видимости.
Оба способа имеют свои преимущества и недостатки. Использование указателя на массив требует более низкоуровневых навыков программирования и более подвержено ошибкам, но может быть полезным в определенных ситуациях. Вектор std::vector
, с другой стороны, обеспечивает абстракцию и удобство использования, автоматическое управление памятью и множество полезных методов для работы с массивом.
Выбор конкретного способа зависит от конкретного случая и требований вашей программы.