std :: vector :: emplace_back比std :: vector :: push_back慢的示例?

fhe*_*eke 5 c++ performance vector

我目前正在阅读Scott Meyer的“ Effective Modern C ++”。在第42项中,他声称,例如,an std::vector::emplace_back通常比但使用快甚至更快push_back。他列出了三个条件,在该条件下至少应该同样快,但在没有完全满足这些条件的情况下没有提供反例。有人可以给我提供一个示例,该示例中emplace_back预期使用会导致比使用严格更差的性能push_back吗?

Ele*_*hev 1

本质上,这可以归结为 std 实现。理论上,emplace 应该总是一样快或更快,但现实是没有标准库实现充分利用这一点。

几年前,他就这个问题发表过演讲:https://www.youtube.com/watch? t=3427&v=smqT9Io_bKo

查看演讲的前 1 小时,了解更详细的解释。演讲结束时的问答也很相关。