2012-03-21 3 views
10

Итак, я пытаюсь создать трехмерный вектор 5x3x2, используя векторную библиотеку и сохраняя число 4 в каждом узле.Пытается создать трехмерный вектор в C++

То, что им пытаются:

vector<vector<vector<int> > > vec (5,vector <int>(3,vector <int>(2,4))); 

би размерной 5х8 спасая INT 6 в каждом узле, это работает:

vector<vector<int> > vec (5,vector <int>(8,6)); 
+0

3D-вектор - это что-то вроде <-1, -2, 4>. Вы говорите о трехмерном массиве (моделируется с использованием вектора векторов векторов). Вектор представляет собой 1D-массив, независимо от того, насколько велика его величина. – Kaz

+3

Пожалуйста, не делайте этого. Используйте 'boost :: multi_array'. –

+0

@KarlKnechtel Использование Boost может не подходить для всех людей из-за лицензирования или создания ограничений по размеру. –

ответ

21

Вы почти получили это право - второй вложенной vector должны быть vector<vector<int> >, а не просто vector<int>:

vector<vector<vector<int> > > vec (5,vector<vector<int> >(3,vector <int>(2,4))); 
+0

ах, я понимаю, почему. Спасибо = D – Mete

5

Также вы можете заявить об этом:

// first form 
typedef vector<int> v1d; 
typedef vector<v1d> v2d; 
typedef vector<v2d> v3d; 
v3d v(5, v2d(3, v1d(2, 4))); 

// second form 
vector<vector<vector<int> > > v = vector<vector<vector<int> > >(5, vector<vector<int> >(3, vector<int>(2, 4))) 
Смежные вопросы