我正在阅读Scott Meyer的《Effective Modern C++》。在第42条中,他声称例如
std::vector::emplace_back
通常情况下至少与使用push_back
一样快甚至更快。他列出了三个条件,在这些条件得到满足的情况下,它应该至少和push_back
一样快,但是在这些条件不全都得到满足的情况下,他没有提供反例。
有人可以给我一个例子,使用emplace_back
预计性能明显比使用push_back
差吗?
emplace_back
来进行花括号初始化(例如,调用列表构造函数,如vecOfVecs.emplace_back({1, 2, 3});
),所以我猜这会使它不如push_back
快。 - chrisemplace_back
实际上比较慢,那将是非常罕见和奇怪的情况。通常情况下,它的速度要么相同,要么更快。 - sp2danny