使用函数返回的向量内容扩展向量的最佳方法是什么?
我能做到:
std::vector<int> base;
{
std::vector<int> tmp = getVec(); //RVO will make this efficient
base.reserve(base.size() + tmp.size());
base.insert(base.end(), std::make_move_iterator(tmp.begin()), std::make_move_iterator(tmp.end()));
}
但是有可能不创建tmp吗?我可以通过引用将base传递给getVec,但我觉得参数应该是输入和输出的返回值。理想情况下我可以这样做:
base.extend(getVec());
但是我看不出如何用普通的矢量函数做到这一点。
答案 0 :(得分:-1)
将要追加的矢量作为参数发送。这被广泛使用和接受。
void func(vector<int>* master) {
// Generate values as you did in getVec() but now append to the original vector
// instead of to a temp.
while(generatingNumbers(i))
master->push_back(i);
}