有可能行向量來push_back
vector
元素在一行時,它包含指針:的push_back非指針元素在一個
vector<SomeClass*> v;
v.push_back(new SomeClass(initVar1));
v.push_back(new SomeClass(initVar2));
v.push_back(new SomeClass(initVar3));
有沒有辦法做一個在線push_back
就像這與非 - 指針變量(它們必須是其他變量的副本)?
有可能行向量來push_back
vector
元素在一行時,它包含指針:的push_back非指針元素在一個
vector<SomeClass*> v;
v.push_back(new SomeClass(initVar1));
v.push_back(new SomeClass(initVar2));
v.push_back(new SomeClass(initVar3));
有沒有辦法做一個在線push_back
就像這與非 - 指針變量(它們必須是其他變量的副本)?
如果他們有公共的拷貝構造函數,當然:
v.push_back(SomeClass(initVar));
注意push_back
創建一個副本,無論如何,所以似乎沒有意義的我。在C++ 11中,如果可能的話,該對象將被移動。
此外,讓自己頭疼,並使用std::unique_ptr<T>
而不是原始指針爲您的向量元素。以這種方式使用原始指針會完全禁用向量爲您管理內存的能力,從而擊敗一半使用它的目的。
太棒了,謝謝。你可能想編輯你的例子來說'initVar1',因爲'some_instance'讓我認爲你正在討論當前實例的拷貝構造函數。這將需要我實例化該實例並擊敗嘗試在一行中完成的整個目的。 – 2013-02-28 00:47:29
unique_ptr是否支持多態?例如。 'unique_ptr
@ChrisRedford:是的,它遵循C++的規則。你可以像在其他任何情況下一樣傳遞一個指向子類的指針; 'std :: unique_ptr
請參閱http://stackoverflow.com/questions/4185350/is-it-safe-to-push-back-dynamically-allocated-object-to-vector – user1929959 2013-02-28 00:30:50
看起來像需要C++ 11。有沒有辦法用C++ TR1做到這一點? – 2013-02-28 00:33:23