如何用一行代码连接两个向量
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)) {}
};
我发誓这不是向量串联中任何看似无穷无尽的线程的副本。对于我的情况,在派生的 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)) {}
};