2012-03-21 57 views
10

Vì vậy, tôi cố gắng tạo một véc tơ 5x3x2 3 chiều, sử dụng lib vector và lưu số 4 trong mỗi nút.Cố gắng tạo một vector 3 chiều theo C++

Thats những gì im cố gắng:

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

cho một chiều lưu int 6 trong tất cả các nút 5x8 bi, công trình này:

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

Một vector 3D là một cái gì đó như <-1, -2, 4>. Bạn đang nói về một mảng 3D (được mô phỏng bằng cách sử dụng một vec tơ vectơ của vectơ). Một vectơ là một mảng 1D, cho dù nó có bao nhiêu kích thước. – Kaz

+3

Xin đừng làm điều này. Sử dụng 'boost :: multi_array'. –

+0

@KarlKnechtel Sử dụng Boost có thể không phù hợp với tất cả mọi người, do cấp phép hoặc xây dựng các ràng buộc về dấu chân. –

Trả lời

21

Bạn hầu như đã nhận nó đúng - các lồng thứ hai vector phải là vector<vector<int> >, không chỉ là vector<int>:

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

ahh, tôi hiểu tại sao. Cảm ơn bạn = D – Mete

5

Ngoài ra, bạn có thể khai báo các biểu mẫu này:

// 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))) 
Các vấn đề liên quan