c++ push_back与emplace_back添加pair{}的问题

参考:https://stackoverflow.com/questions/53900865/emplace-back-vs-push-back-when-inserting-a-pair-into-stdvector
问题描述:
queue> q;
//correct
q.push({0,1});
q.emplace(0, 1);
//wrong
q.emplace({0, 1});

我以为emplace可以完全替换push的。
原因
push_back() 向容器尾部添加元素时,首先会创建这个元素,然后再将这个元素拷贝或者移动到容器中(如果是拷贝的话,事后会自行销毁先前创建的这个元素);而 emplace_back() 在实现时,则是直接在容器尾部创建这个元素,省去了拷贝或移动元素的过程。 emplace_back不能使用{1, 2},因为它可以接受任何东西(因此没有

c++ push_back与emplace_back添加pair{}的问题最先出现在Python成神之路

版权声明:
作者:Mr李
链接:https://www.techfm.club/p/18984.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>