我可以返回一个向量来用C++11扩展现有的向量吗

Can I return a vector to extend an existing vector with C++11?

本文关键字:向量 扩展 C++11 我可以 一个 返回      更新时间:2023-10-16

用函数返回的向量内容扩展向量的最佳方法是什么?

我可以做:

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());

但我看不出如何用法向量函数来实现这一点。

将要附加到的向量作为参数发送。这被广泛使用和接受。

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);
}