如何使用一行代码连接两个向量

Car*_*ton 3 c++ stdvector

我发誓这不是任何看似无限数量的矢量连接线程的重复.对于我的情况,在派生类构造函数中,我需要将a传递std::vector<int>给基类构造函数,但传递的向量需要是另外两个向量的串联.例:

#include <vector>    
using namespace std;

struct Base {
    Base(vector<int> numbers) {
        //Do something with numbers
    }
};

struct Derived: public Base {
    Derived(vector<int> numbers):
        Base(concatenate(numbers, {4,5,6})) {}  //Is there a built-in "concatenate" function?
}; 

int main (int argc, char* argv[])
{
    Derived D({1,2,3});
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我显然可以通过编写自己的concatenate函数来实现这一点,但我想知道是否已经有了标准库方法来实现这一点.我发现的矢量级联的例子都不适合在初始化列表中使用,因为它们跨越多行; 我需要一个单线串联.

Mar*_*k B 6

好的,因为numbers通过值传递,我们可以通过将初始化列表insert与逗号运算符组合使用技巧:

struct Derived: public Base {
    Derived(vector<int> numbers):
        Base((numbers.insert(numbers.end(), {4,5,6}), numbers)) {}
}; 
Run Code Online (Sandbox Code Playgroud)