2013-11-23 2 views
0

Как динамически выделять память для двумерной строки, как показано ниже.Динамически выделять память для многомерной строки

struct sample { 
    int i; 
    std::string arrray [10][10]; 
}; 

Как динамически распределять память для одного ниже?

struct sample { 
    int i; 
    std::string **arrray; 
}; 
+0

вы можете просто использовать std: vector? – dchhetri

ответ

1

Первый не требует выделения памяти (при объявлении массивов в стиле C в структурах компиляции будет выделить место для них внутри структуры).

Второй - довольно стандартный 2D-массив.

arrray = new string*[10]; 
for (int i = 0; i < 10; i++) 
    arrray[i] = new string [10]; 
0

Шаг 1: Используйте std :: vector для хранения указателей строк;

Шаг 2: Используйте свой собственный определенный класс (векторный контейнер) для инкапсуляции вектора;

Шаг 3: Переопределить оператор 2-деменции [], отображать 2D-индекс в std :: vector size;

Шаг 4: Теперь вопрос заключается в том, как манипулировать 2D-индексом? Вы можете определить другой «класс друга», векторный контейнер [] возвращает класс friend, а класс friend также имеет [], который возвращает значение внутри std :: vector.

Не забывайте функцию члена, чтобы изменить размер.

Смежные вопросы