這裏我有一個自動分配的std::vector v
。現在有沒有辦法從v
構造另一個動態分配的std::vector
,這樣就沒有複製構造函數的開銷。將自動分配的std :: vector轉換爲動態分配的std :: vector而不需要開銷
std::vector<int> v(3);
std::vector<int>* v2 = new std::vector<int>(v);
- 發生什麼事時
v
destrucotor叫? - 有人可以詳細介紹std :: vector的移動構造函數。
- 或者我不應該擔心編譯器會爲我優化這個嗎?
我終於想要一個std :: shared_ptr的v2
,我可以傳遞給其他函數。
爲什麼你需要這樣做?如果你需要*移動*向量,那麼只需'移動'它。 – NathanOliver
不,不能執行。你正試圖將一個'vector'從一個內存區域移動到另一個區域。但是,您可以使用指針並傳遞指針。 –
主要問題是,爲什麼你首先用'new'創建一個動態分配的'std :: vector'? – ArchbishopOfBanterbury