Khi lồng nhau, tiêu chuẩn :: mảng có thể trở nên rất khó đọc và không cần thiết tiết. Thứ tự ngược lại của các kích thước có thể đặc biệt khó hiểu.
Ví dụ:
std::array < std::array <int, 3 > , 5 > arr1;
so với
char c_arr [5][3];
Ngoài ra, lưu ý rằng bắt đầu(), kết thúc() và kích thước() tất cả trở về giá trị vô nghĩa khi bạn tổ std :: mảng.
Vì những lý do này tôi đã tạo các vùng chứa đa chiều có kích thước cố định của riêng mình, mảng_2d và mảng_3d. Họ có lợi thế là họ làm việc với C++ 98.
Chúng tương tự với std :: array nhưng đối với mảng đa chiều có kích thước 2 và 3. Chúng an toàn hơn và không có hiệu suất kém hơn so với các mảng đa chiều có sẵn. Tôi không bao gồm một vùng chứa cho các mảng đa chiều có kích thước lớn hơn 3 vì chúng không phổ biến. Trong C++ 11, phiên bản mẫu variadic có thể được tạo ra, hỗ trợ một số thứ tự tùy ý (ví dụ như ví dụ của Michael Price).
Một ví dụ về các biến thể hai chiều:
//Create an array 3 x 5 (Notice the extra pair of braces)
fsma::array_2d <double, 3, 5> my2darr = {{
{ 32.19, 47.29, 31.99, 19.11, 11.19},
{ 11.29, 22.49, 33.47, 17.29, 5.01 },
{ 41.97, 22.09, 9.76, 22.55, 6.22 }
}};
Full tài liệu có sẵn ở đây: http://fsma.googlecode.com/files/fsma.html
Bạn có thể tải thư viện ở đây: http://fsma.googlecode.com/files/fsma.zip
Điều gì không hiệu quả? Thông báo lỗi là gì?Điều đó sẽ giúp ai đó thực sự trả lời câu hỏi. Tôi hiểu các lỗi mẫu là chính họ tiết, nhưng ít nhất một số sẽ giúp ích. – Mahesh
Vâng nó thiếu một '>' cho người mới bắt đầu. – Mat
mảng kiểm tra; sai số đối số mẫu (3, nên là 2) –
NoSenseEtAl