我必须通过选择其一些成员来从数组中构造Eigen::Vector
。我知道我可以使用Eigen::Map
在不复制的情况下初始化Eigen::Vector
。
假设我有一个N
整数数组,我需要通过选择具有从j
到j+m
到CC_7到CC_7的数组值来制作Eigen::VectorXi
,而无需复制值。
在特征或armadillo中,这是否有可能?
示例:
int array[]= {1,2,3,4,5,6,7,8,9,10};
//I need to initialize a Eigen::VectorXi with values having 0 to 0+3
// indices and 5 to 5+3 indices. ie with elements {1,2,3,4,6,7,8,9}
使用armadillo,您可以将高级构造函数用于向量,然后使用join_cols((/join_rows((函数:
int array[] = {1,2,3,4,5,6,7,8,9,10};
Col<int> A( &array[0], 4, false );
Col<int> B( &array[5], 4, false );
Col<int> C = join_cols(A,B);
col&lt;>是用于列矢量的Armadillo模板类。如果需要行向量,将Col<int>
更改为Row<int>
。
您可以使用COMMMA初始器加入两个使用Map
生成的向量,每个向量:
int array[] = {1,2,3,4,5,6,7,8,9,10};
int m = 4;
int j = 0, k = 5;
VectorXi w(2*m);
w << Map<VectorXi>(&array[j], m) , Map<VectorXi>(&array[k], m);
请注意,w
必须以其大小初始化以防止断言失败。