我想将vtkDoubleArray
的元素复制到C ++中std::vector
(如How to convert a vtkDoubleArray to an Eigen::matrix中所示)
我想让这个工作:
typedef std::vector<double> row_type;
typedef std::vector<row_type> matrix_type;
int n_components = vtk_arr->GetNumberOfComponents();
int n_rows = vtk_arr->GetNumberOfTuples();
row_type curTuple(n_components);
matrix_type cpp_matrix(n_rows, row_type(n_components));
for (int i=0; i<n_rows; i++) {
vtk_arr->GetTuple(i, curTuple);
cpp_matrix[i] = curTuple;
}
目前我有这个错误:
error C2664: 'void vtkDataArrayTemplate<T>::GetTuple(vtkIdType,double
*)' : cannot convert parameter 2 from 'row_type' to 'double *'
是否有一些vtk
方法(希望,更强大和更有效)已经实现了这一目标?
答案 0 :(得分:1)
正如错误所示,您传递row_type
(std::vector<double>
),其中double*
。也许你想传递一个指向底层数据的指针:
vtk_arr->GetTuple(i, curTuple.data());
有关详细信息,请参阅std::vector::data
。