如何在std :: vector中获取vtkDoubleArray的值

时间:2014-07-09 09:52:12

标签: c++ vtk

我想将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方法(希望,更强大和更有效)已经实现了这一目标?

1 个答案:

答案 0 :(得分:1)

正如错误所示,您传递row_typestd::vector<double>),其中double*。也许你想传递一个指向底层数据的指针:

vtk_arr->GetTuple(i, curTuple.data());

有关详细信息,请参阅std::vector::data