2012-03-27 65 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意味着它只被複製一次。如果這是一次價值傳遞,那麼它將被複制兩次(目前忽略編譯器將拷貝刪除,幾乎肯定會這樣)。