我应该用 emplace_back 替换所有对 push_back 的调用吗?

Hel*_*ein 7 c++ stl visual-studio c++11

在我的 C++ 应用程序中,我大量使用 STL 容器,如vector. 有很多对 的调用push_back,我一直担心不必要的构造和复制操作。

我的应用程序非常低级,我非常关心 CPU 和内存使用情况。我应该将所有呼叫替换为push_back呼叫emplace_back吗?

我正在使用 Visual Studio 2013。

Hel*_*ein 5

我更换了所有调用push_back与调用emplace_back,发现以下情况:

  • RAM 使用量减少了大约 20%(更新:这可能是由于其他影响)
  • CPU使用率不变
  • 二进制文件稍小 (x64)
  • 没有兼容性问题

根据这些经验push_backemplace_back如果您的项目不需要与旧编译器向后兼容,我强烈建议您从到。