tôi có thể tạo constexpr
std :: mảng:Không thể tạo std :: vector constexpr
constexpr std::array<int,5> values {1,2,3,4,5};
Nó hoạt động tốt. Nhưng tôi không thể tạo constexpr
vector:
constexpr std::vector<int> vec = {1,2,3,4,5};
Nó mang lại cho tôi một lỗi:
the type 'const std::vector<int>' of constexpr variable 'vec' is not literal constexpr std::vector<int> vec = {1,2,3,4,5};
Chính thức, đó là do hàm tạo 'vector' không được khai báo' constexpr'. Tại sao nó không được tuyên bố như vậy? Bởi vì constructor 'vector' thường cần phân bổ bộ nhớ trên heap, tất nhiên chỉ có thể được thực hiện trong thời gian chạy. –
@Igor Tandetnik như vậy, không có cách nào để tạo ra vector constexpr? – Leo
Không có. Tại sao bạn sẽ muốn? Nó có ý nghĩa với tôi. Toàn bộ điểm của 'vector' là khả năng thay đổi kích thước động. Nếu bạn không cần điều đó, chỉ cần sử dụng 'std :: array' hoặc plain array. –