我想要一些等價於C++ std :: vector的東西,其中底層對象是不可變的。所以我可以通過push_back()項將它們添加到向量中,等等。一個實際的std :: vector維護一個數組,該數組的大小大於向量的大小,填充了默認的構造對象,當你使用push_back()時,它對數組中元素的賦值。我的不可變對象沒有默認的構造函數,並且賦值是一個變異操作,所以也是如此。C++中的不可變對象的可變容器
我可以做一個vector<boost::optional<T>>
,但是這是一個雜亂的接口,因爲我只希望把有效構造的對象爲載體,只有讓那些走出載體。
我以爲提升有這樣的東西,但我找不到它。有這樣的事情存在嗎?
至少在C++ 11中,向量按照您希望的方式工作。你可以使用'emplace_back()'。 – 2014-12-03 19:07:08
你能否將智能指針存儲到向量中的實際不可變對象? – shuttle87 2014-12-03 19:07:28
你描述的方式'矢量'不完全匹配它的工作方式。你的類型是否有移動和/或複製構造函數? –
hvd
2014-12-03 19:07:29