C ++ 11'de emplace_back()
, push_back()
yerinde yapılanmaya izin verdiği için genellikle (verimlilik açısından) tercih edilir , ancak bu push_back(std::move())
, önceden oluşturulmuş bir nesne ile kullanıldığında hala geçerli midir?
Örneğin emplace_back()
, aşağıdaki gibi durumlarda hala tercih ediliyor mu?
std::string mystring("hello world");
std::vector<std::string> myvector;
myvector.emplace_back(mystring);
myvector.push_back(std::move(mystring));
// (of course assuming we don't care about using the value of mystring after)
Ek olarak, yukarıdaki örnekte aşağıdakileri yapmanın herhangi bir faydası var mı?
myvector.emplace_back(std::move(mystring));
yoksa buradaki hareket tamamen gereksiz mi, yoksa hiçbir etkisi yok mu?
myvector.emplace_back(mystring);
kopyalar ve hareket etmez. Diğer iki hareket ve eşdeğer olmalıdır.