从特征数组/矩阵的一行中填充std :: vector

问题描述 投票:0回答:1

我有一个特征Array2Xd,我想将其每一行放入std::vector<double>

spline_knots是大小为(2,4)的Array2Xd,具有以下值:

Array2Xd spline_knots(2, 4);
spline_knots << -1, 0, 30.57, 60.83,
                 0, 0, 9.73,  15.44;

我基于this answer尝试了以下操作:

vector<double> knot_xs(spline_knots.row(0).data(), 
                           spline_knots.row(0).data() + spline_knots.row(0).size());
vector<double> knot_ys(spline_knots.row(1).data(), 
                           spline_knots.row(1).data() + spline_knots.row(1).size());

但是尝试使用上述代码将每一行复制到向量中,我得到以下结果,这很奇怪(第一行以正确的元素开头,然后为零;第二行只有零,以第一个元素的第三个元素结尾行):

kont_xs:   -1   0   0   0 
knot_ys:    0   0   0   30.57

这里有什么问题,如何从2D数组的一行中创建矢量无循环

c++ eigen
1个回答
0
投票

想通了。问题与storage order有关,这是本征如何在内存中布置二维数组的方式。有两种可能的布局:RowMajorColumnMajor。默认布局为ColumnMajor,它按列存储2D数组元素。

© www.soinside.com 2019 - 2024. All rights reserved.