我想轉發一些參數來進行對象構建。我沒有完全理解在關聯容器中使用emplace的原理,或者我可能只是用錯誤的方式使用/思考。如果有人可以共享代碼片段以供使用,那將會很棒。在關聯容器中使用emplace(args && ...)
聯想容器等地圖總是存儲樣對(的一個目的),而佈設功能說會通過轉發參數來調用所存儲的對象的構造(其爲總是在配對的地圖的情況下)。那麼,即使函數具有可變簽名,我們也僅限於提供兩個參數(鍵,值)嗎?
當我使用升壓容器佈設之前,我可以傳遞參數,如: 佈設(ARG1,ARG2,ARG3,ARG4)// ARG2,ARG3,ARG4被用於構造對象和Arg 1是關鍵位置。新的gcc-4.6和C++編譯11時
,這打破 但現在我需要做的是這樣的: 佈設(ARG1,MyObj中(ARG2,ARG3,ARG4)); //使相同的代碼工作;
因此,新的安置區不會像提升那樣進行任何明智的構建?我是否限制只向地圖提供2個參數,因爲對將始終接受構造函數的兩個參數。
仍然有功能e標準庫沒有完全實現所有的C++ 11。第一個版本('emplace(key,arg1,arg2,arg3)')應該可以工作。 –
'std :: pair'支持[分段構造](http://en.cppreference.com/w/cpp/utility/pair/pair),儘管它看起來不那麼吸引人。 – Cubbi