【发布时间】:2014-01-22 21:19:44
【问题描述】:
有没有人知道这种 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)的相关参考资料?
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_back
cbegin()/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()));
【讨论】: