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数组的一行中创建矢量我有一个Eigen Array2Xd,我想将其每一行放入std :: vector无循环
?
。 spline_knots是大小为(2,4)的Array2Xd,具有以下值:Array2Xd spline_knots(2,4); ...
RowMajor
和ColumnMajor
。默认布局为ColumnMajor
,它按列存储2D数组元素。 知道这一点,我得到的奇怪结果是有道理的。 .row(0).data()
将指针返回到第一行的第一元素。 .row(0).size()
为4,.row(0).data() + 4
沿列取前四个元素:[-1, 0, 0, 0]
。第二个列的相同参数从(1,0)元素开始,按列数计算4个元素将导致[0, 0, 0, 30.57]
。
有两种解决方案: