Tôi muốn có một cái gì đó tương đương với một C++ std :: vector, nơi mà các đối tượng bên dưới là không thay đổi. Vì vậy, tôi có thể push_back() các mục để thêm chúng vào vectơ, vv. Std :: vector thực tế duy trì một mảng bên dưới lớn hơn kích thước của vectơ, chứa các đối tượng được tạo mặc định và khi bạn push_back(), nó một nhiệm vụ cho một phần tử trong mảng. Các đối tượng bất biến của tôi không có một hàm tạo mặc định, và phép gán là một hoạt động biến đổi, vì vậy nó cũng vậy.Một container có thể thay đổi của các đối tượng bất biến trong C++
Tôi có thể làm một vector<boost::optional<T>>
, nhưng đó là một giao diện lộn xộn vì tôi chỉ muốn đặt các đối tượng được xây dựng hợp lệ vào vectơ và chỉ lấy các đối tượng đó ra khỏi vectơ.
Tôi nghĩ rằng tăng cường có một cái gì đó như thế này, nhưng tôi không thể tìm thấy nó. Có một cái gì đó như thế này tồn tại?
Ít nhất trong C++ 11, vectơ hoạt động như bạn muốn. Bạn có thể sử dụng 'emplace_back()'. –
Bạn có thể lưu trữ con trỏ thông minh đến các đối tượng bất biến thực sự trong vectơ của bạn không? – shuttle87
Cách bạn mô tả 'vector' không khớp chính xác với cách hoạt động của nó. Loại của bạn có di chuyển và/hoặc sao chép các nhà xây dựng? –
hvd