Tôi muốn sử dụng std::array
từ C++ 11 làm trường của lớp của riêng tôi. Phải mất hai tham số mẫu (đầu tiên xác định loại dữ liệu, thứ hai xác định kích thước của một mảng).C++ 11 std :: mảng
Nhưng tôi biết thông số thứ hai chỉ trong hàm tạo. Tôi không quen với tiêu chuẩn C++ 11, nhưng tôi cho rằng không thể đặt tham số mẫu trong khi thực thi.
Có bất kỳ giải pháp thay thế nào cho std::array
không? std::vector
có lẽ hơi quá nhiều, vì tôi sẽ không bao giờ thay đổi kích thước của nó.
Tôi sẽ nói sử dụng một std :: vector trên một unique_ptr, trước đây là tương thích với tất cả các chức năng thư viện chuẩn mà làm việc trên vòng lặp. Trong thực tế, toàn bộ điểm của std :: array là cung cấp một giao diện như vậy trên một mảng bình thường. –
@ user1131467: Thật vậy, 'std :: vector' thuận tiện hơn nhiều; nhưng OP đã thể hiện một mối quan tâm về hiệu quả, vì vậy có lẽ tiết kiệm một vài byte là quan trọng. –
Nếu bạn định viết một trình bao bọc kiểu STL, thì ít nhất nó cũng phải biết kích thước của nó. Bạn chỉ có thể không bận tâm về năng lực. – UncleBens