Reputation: 25555
I am searching for something like this:
fmat A = randu<fmat>(4,5);
float **a = A.to_array(); // Return matrix as float**
Does anybody know how one could do this in Armadillo
?
Upvotes: 2
Views: 4294
Reputation: 15869
There is no function to return an array of pointers. You can access the underlying buffer with the memptr()
method:
float *a = A.memptr();
You can also get a pointer to any matrix column with the colptr()
method. I'm not sure why you might need an array of pointers but you could build one like this (uncompiled and untested code):
std::vector<float *> av;
av.reserve(A.n_cols);
for (unsigned int i = 0; i < A.n_cols; ++i)
av.push_back() = A.colptr(i);
float **a = &av[0]; // a remains valid while av is in scope
Note that Armadillo stores data in column-major order.
Upvotes: 9