15
我試圖找到一些簡單的方法來放置std::vector<std::shared_ptr<int>>
中的元素,但不能附帶任何東西。 std::shared_ptr
採用指針作爲參數,所以我還是可以這樣寫:make_shared和emplace函數
std::vector<std::shared_ptr<int>> vec;
vec.emplace_back(new int(10));
不過,我不希望儘可能地用手使用new
,寧可想如果可能使用std::make_shared
。問題是,如果我真的想使用它,我必須使用push_back
代替,失去就地建設的優勢:
std::vector<std::shared_ptr<int>> vec;
vec.push_back(std::make_shared<int>(10));
有沒有什麼辦法讓這兩個emplace_back
和std::make_shared
的優勢是什麼?如果沒有,在這種情況下我應該遵循一個指導原則嗎?
編輯:其實,我問了這個問題,但有一個無關的問題。 Andy的答案是好的,同時使用emplace
函數和std::make_shared
都沒有任何實際問題。
我認爲這是好,因爲它會得到 –
沒有,他只是說他不能這樣做呢? – 0x499602D2
@ 0x499602D2:爲什麼不呢? –