Tôi có một Boost.MultiArray n-chiều tôi khởi tạo như sau:Một dòng initialiser cho Boost.MultiArray
const int n=3, size=4; //# of dimensions and size of one dimension
boost::multi_array<char,n> arr;
boost::array<size_t,n> extents; //size of each dimension
extents.assign(size); //assign size to each dimension -> {{4, 4, 4}}
arr.resize(extents);
Vì vậy, tôi có 4 dòng mã để có được những MultiArray, nhưng tôi muốn làm điều đó trong một dòng. Có cách nào đơn giản để tạo ra một MultiArray với n kích thước mỗi có chiều dài size
(vì vậy tôi có thể viết arr(samevaluearray(n,size))
) hoặc tôi đã bỏ lỡ một constructor tiện dụng cho MultiArray?
Chỉnh sửa: Nó sẽ hoạt động mà không phụ thuộc vào một giá trị nhất định của n, tức là arr({{size,size}}
sẽ chỉ hoạt động cho n=2
.
Vì có thể không rõ ràng: boost::multi_array<char,n>(boost::extents[4][4][4])
khởi tạo chính xác mảng 4x4x4, nhưng mỗi lần n
được thay đổi trong mã nguồn, mỗi lần khởi chạy phải được cập nhật bằng tay, vì vậy nó không phải là tùy chọn.
OMG, thật khó để bọc nó trong một hàm chấp nhận hai số nguyên và trả về 'boost :: multi_array'? –
Hoặc để thực sự thú vị, hãy bọc nó bên trong một macro ;-) –