c++ push_back与emplace_back添加pair{}的问题
参考:https://stackoverflow.com/questions/53900865/emplace-back-vs-push-back-when-inserting-a-pair-into-stdvector
问题描述:
queue
//correct
q.push({0,1});
q.emplace(0, 1);
//wrong
q.emplace({0, 1});
我以为emplace可以完全替换push的。
原因
push_back() 向容器尾部添加元素时,首先会创建这个元素,然后再将这个元素拷贝或者移动到容器中(如果是拷贝的话,事后会自行销毁先前创建的这个元素);而 emplace_back() 在实现时,则是直接在容器尾部创建这个元素,省去了拷贝或移动元素的过程。 emplace_back不能使用{1, 2},因为它可以接受任何东西(因此没有
共有 0 条评论