kir*_*gum 3 c++ arrays pointers eigen
我在大多数代码中使用Eigen,但我想使用GSL的Miser或Vegas monte-carlo集成.我需要将Eigen的向量转换为c的数组,double这是最好的方法吗?
Matrix<double,3,1> --> c_array []
Run Code Online (Sandbox Code Playgroud)
我之前和Eigen合作过......
通常,对于内部数组数据的简单访问,如此线程中用户janneb所提到的,您只想调用data():
Vector3d v;
// Operations to add values to the vector.
double *c_ptr = v.data();
Run Code Online (Sandbox Code Playgroud)
如果希望迭代各个值以执行某些操作,则需要迭代每一行(.row(index))和列(.col(index)),具体取决于要在目标中放置的矩阵顺序向量.
在您的特定示例中,您只需要迭代行:
Matrix<double,3,1> --> c_array []
Run Code Online (Sandbox Code Playgroud)
你想要调用.col(0).如果出现类似需求,具体文档总是有用的!
所以你最终会得到类似的东西(假设你想使用三行单列矩阵):
Vector3d v;
// Operations to add values to the vector.
for (int i=0; i<v.rows(); ++i)
c_array[i] = v(i,0);
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.