有沒有人知道這種emplace_back用法(C++ 11)的相關參考?包含另一個向量(部分向量)的矢量emplace_back用法(C++ 11)
void func(const vector <int> &A){
vector <vector <int> > B;
B.emplace_back(A.cbegin() , A.cend()); // emplace vector A directly
}
有沒有人知道這種emplace_back用法(C++ 11)的相關參考?包含另一個向量(部分向量)的矢量emplace_back用法(C++ 11)
void func(const vector <int> &A){
vector <vector <int> > B;
B.emplace_back(A.cbegin() , A.cend()); // emplace vector A directly
}
您最好在Google或cppreference.com上搜索它們,然後再詢問任何進一步參考。
emplace_back()
:http://en.cppreference.com/w/cpp/container/vector/emplace_backcbegin()/cend()
(因爲C++ 11):他們是相同與begin()/end()
http://en.cppreference.com/w/cpp/container/vector/begin我不知道你真正的問題是什麼,但你的代碼在B
內顯示插入了一個新的矢量。新的矢量通過調用constructor (4)進行初始化,該函數採用兩個參數A.cbegin() , A.cend()
。
你可以把它作爲
B.push_back(std::vector<int>(A.cbegin() , A.cend()));
謝謝丹尼爾,那是一個很好的提示。 –
對不起我描述的懶惰的優化版本。謝謝,[鏈接](http://en.cppreference.com/w/cpp/container/vector/emplace_back)實際上並不足夠。然而,@ daniel-frey給出了一個很好的方向,在push_back中提到了構造函數(4)。 –