【发布时间】:2015-10-05 05:14:02
【问题描述】:
我目前正在阅读 Scott Meyer 的“Effective Modern C++”。在第 42 项中,他声称,例如std::vector::emplace_back 通常(但并非总是)与使用 push_back 一样快,甚至更快。他列出了三个条件至少应该一样快,但在这些条件不完全满足的情况下没有提供反例。
有人可以给我举个例子,使用emplace_back 会导致性能比使用push_back 更差吗?
【问题讨论】:
-
这不是一回事,但你不能将
emplace_back用于大括号初始化程序(例如,调用像vecOfVecs.emplace_back({1, 2, 3});这样的列表构造函数),所以我想这不会像快到push_back。 -
He lists three conditions是? -
如果
emplace_back实际上是更慢,那将是一个非常模糊和奇怪的情况。它通常相同或更好。 -
Scott Meyers 在 @Meeting C++ 2014 here 的主题演讲中提到了这个确切的问题。享受吧。
标签: c++ performance vector