2010-11-30 2 views

ответ

4

Вы должны изменить размер всего вложенного vector s по одному. Используйте вложенные петли for или рекурсию.

+2

нормально, такие как m_elements .resize (3); для (int i = 0; i <3; i ++) { массив [i] .resize (5); для (int j = 0; j <5; j ++) { массив [i] [j] .resize (10); } } – qutron 2010-11-30 09:00:58

+0

@qutron: Да ... просто как это. :-) – 2010-11-30 09:06:14

+0

Вам не нужно делать это по одному. См. Мой ответ. – Matt 2014-06-19 04:04:41

4

я это сделал))

array.resize(3); 
for (int i = 0; i < 3; i++) 
{ 
    array[i].resize(5); 
    for (int j = 0; j < 5; j++) 
    { 
     array[i][j].resize(10); 
    } 
} 
2

Я хотел бы сделать пользовательский контейнер, содержащий вектор векторов (из ... в измерении) и изменение размеров с изменением размера-функций на измерение. Таким образом, вы можете поместить инвариант равного размера на измерение в одном месте. Фактическое изменение размера может быть выполнено в цикле в соответствии с размером.
Там будет немного работы, связанной с обнародованием, что должно быть доступно (оператор [], ...)

5

смотри также Boost.MultiArray

Boost.MultiArray provides a generic N-dimensional array concept definition and common implementations of that interface.

8
array.resize(3,vector<vector<custom_type> >(5,vector<custom_type>(10))); 
Смежные вопросы