我relativly新的C++,這可能是一個愚蠢的問題,但我想了解目前rValue
和lValue
引用,這來到我的腦海:C++映射拷貝性病到矢量::移動
假設我們有一個映射(來自數據庫或其他),我們想要將它的所有值複製到一個向量中。
void insertItems(std::vector<std::string>& v)
{
std::map<int, std::string> names = loadFromDb();
for (auto& kv : names)
{
v.push_back(std::move(kv.second));
}
}
在這裏使用std::move
是否正確? std::string
提供了一個移動構造函數,(可能不適用於字符串,但對於較大的對象)移動構造函數比複製構造函數快得多。另外我們知道,我們不使用其他地方的地圖項目,只要我們離開函數,它們就會超出範圍。我的推定是否正確?
我看不出在我的思想中有矛盾,但這是一個複雜的話題,我害怕錯過什麼。 P.S .:我認爲問題的名稱不是最好的。如果你有一個更好的人可以隨意編輯它。
實施是否正確。 'v.reserve'是另一個優化。 – Jarod42
哦,記住'v'不是一個指針。 –
哦,是的,謝謝你,你是絕對正確的。我糾正了 – Cilenco