Динамически распределять память для многомерной строки

0

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

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

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

struct sample {
    int i;
    std::string **arrray;
};
  • 0
    Вы можете просто использовать std: vector?
Теги:

2 ответа

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 также имеет [], который возвращает значение внутри std :: vector.

Не забывайте функцию-член для изменения размера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню