изменение размера многомерного вектора - PullRequest
8 голосов
/ 30 ноября 2010

Как изменить размер многомерного вектора, например:

  vector <vector <vector <custom_type> > > array; 

Например, мне нужен массив [3] [5] [10]?

Ответы [ 5 ]

10 голосов
/ 19 июня 2014
array.resize(3,vector<vector<custom_type> >(5,vector<custom_type>(10)));
5 голосов
/ 30 ноября 2010

см. Также Boost.MultiArray

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

5 голосов
/ 30 ноября 2010

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

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);
    }
}
4 голосов
/ 30 ноября 2010

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

2 голосов
/ 30 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...