like ((int*)(src->GetScalarPointer()))[n]
You can use ranges from vtkDataArrayRange.h
#include <vtkDataArrayRange.h>
#include <vtkIntArray.h>
#include <vtkSmartPointer.h>
int main()
{
vtkSmartPointer<vtkIntArray> array = SomeArraySource();
auto valueRange = vtk::DataArrayValueRange<1>(array);
vtkIdType n = SomeIndex();
int val = valueRange[n]; // operator[] access
using ConstIterator = typename decltype(valueRange)::ConstIteratorType;
ConstIterator it = valueRange.begin(); // iterator handle
return EXIT_SUCCESS;
}
However beware that valueRange
is NOT a pointer.
How do I use the head pointer returned by vtKImageData ->GetScalarPointer()
std::cout << (int)(src->GetScalarPointer(i, j, k)) << " ";
std::cout << (src->GetPointData()->GetScalars()->GetTuple(0))[i * src->GetDimensions()[1] * src->GetDimensions()[2] + j * src->GetDimensions()[2] + k] << " ";Get different values