【发布时间】:2014-11-29 15:46:33
【问题描述】:
试图了解使用push() 或emplace() 与std::stack 之间的区别。
我在想,如果我创建一个std::stack<int>,那么我会使用push(),因为整数是一个原始类型,emplace() 没有什么可以构造的。
但是,如果我正在创建 std::stack<string>,那么我会选择 emplace(),因为 std::string 是一个对象。
这是正确的用法吗?
【问题讨论】:
-
我已经读过 push_back vs emplace_back,或者至少尝试过,但我想知道是否有人对像我这样对 c++ 有点陌生的人有更简单的答案。
-
不是重复的。那个人实际上要问的是一个 MSVC10 错误。尽管这个问题可能已经被问过,但在其他地方并没有被问到。
-
为什么大家都在谈论这个 emplace_back() 的事情?我对 C++11 emplace() 方法以及使用 push() 的意义很感兴趣。 cplusplus.com/reference/stack/stack/emplace