我发誓,这并不是矢量连接中任何看似无穷无尽的线程的重复。对于我的情况,在派生类构造函数中,我需要将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;
}
我显然可以通过编写自己的concatenate
函数来实现这一点,但我想知道是否已经有标准库方法来执行此操作。我发现的矢量级联的例子都不适合在初始化列表中使用,因为它们跨越多行;我需要一个单线串联。
答案 0 :(得分:6)
好的,因为numbers
是按值传递的,我们可以通过将初始化列表insert
与逗号运算符组合来使用技巧:
struct Derived: public Base {
Derived(vector<int> numbers):
Base((numbers.insert(numbers.end(), {4,5,6}), numbers)) {}
};
答案 1 :(得分:3)
将向量[b]添加到向量[a]:
a.insert(a.end(), b.begin(), b.end());
如果您不想改变,可以将其复制到第三个载体。