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

How do I concatenate two vectors with one line of code

我发誓这不是向量串联中任何看似无穷无尽的线程的副本。对于我的情况,在派生的 class 构造函数中,我需要将 std::vector<int> 传递给基础 class 构造函数,但传递的向量需要是其他两个向量的串联。示例:

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

我显然可以通过编写自己的 concatenate 函数来做到这一点,但我想知道是否已经有标准库方法可以做到这一点。 None 我发现的向量连接示例适合在初始化列表中使用,因为它们跨越多行;我需要一个单行串联。

将向量 [b] 添加到向量 [a]:

    a.insert(a.end(), b.begin(), b.end());

如果你不想改变 a 你可以将它复制到第三个矢量。

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

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