我想用库Eigen选择C ++中矢量的一部分?
我的意思是如果我有这个载体:
VectorXd v(6);
v << 1, 2, 3, 8, 1, 2;
是否有一个返回此向量的函数:
a << 2, 8, 2;
因为我知道如何只选择一个矢量的一部分,但只选择一步而不是两步。
答案 0 :(得分:2)
没有功能可以完成这个超级特定的事情。如果确实如此,它可能会在eigen block operations之下。你最好的选择是编写自己的功能。类似的东西:
void addConsecutiveSpacedElements(VectorXd &out, const VectorXd &in, int start, int space) {
int index = 0;
for (int in_index = start, in_index < in.size(); in_index += space) {
out[index++] = in[in_index];
}
}
...
addConsecutiveSpacedElements(a, v, 1, 2);
注意:这本质上是伪代码,因此没有错误检查等。它也是未经测试的。