Как динамически выделять память для двумерной строки, как показано ниже.
struct sample {
int i;
std::string arrray [10][10];
};
Как динамически распределять память для ниже?
struct sample {
int i;
std::string **arrray;
};
Первый не требует выделения памяти (когда вы объявляете массивы стилей C в структурах, компиляция будет выделять пространство для них внутри структуры).
Второй - довольно стандартный 2D-массив.
arrray = new string*[10];
for (int i = 0; i < 10; i++)
arrray[i] = new string [10];
Шаг 1: используйте std :: vector для хранения указателей строк;
Шаг 2. Используйте свой собственный определенный класс (векторный контейнер) для инкапсуляции вектора;
Шаг 3: переопределить оператор 2-деменции [], отображая 2D-индекс в std :: vector size;
Шаг 4: Теперь вопрос заключается в том, как манипулировать 2D-индексом? Вы можете определить другой "класс друга", векторный контейнер [] возвращает класс друга, а класс friend также имеет [], который возвращает значение внутри std :: vector.
Не забывайте функцию-член для изменения размера.