2012-03-27 25 views

回答

7

是的,it does copy the element you give it。在C++ 11中,如果你给它一个临时的或者std::move的话,它也可以移动它。

请注意,C++ 11还提供emplace,它直接在给定的构造函数参数中构造值。

+2

添加了参考链接,希望您不介意。 – 2012-03-27 00:51:38

+0

@NiklasB .:你比我快30秒;) – 2012-03-27 00:52:19

1

这取决于。该值被复制,但可能无法按您的想法工作。如果您推动一个指针,如char*,它将只复制指针值,而不是整个字符串。如果您正在推送一个简单的intCustomObject而不是指针,它将被复制。

1

参数stack适配器本身是参考,但请记住,stack只是一个适配器 - 其push立即调用push_back,传递相同的参数。然而,这个调用通过值来传递参数。

因此,您传递的参数会被复制 - 通过引用传递给std::stack意味着它只被复制一次。如果这是一次价值传递,那么它将被复制两次(目前忽略编译器将拷贝删除,几乎肯定会这样)。