Eigen::ArrayXd sort_vec(Eigen::ArrayXXd & arr, ArrayXd & sorted_arr)
{
Eigen::ArrayXd ind=ArrayXd::LinSpaced(arr.size(), 0, arr.size()-1);
auto rule=[arr](int i, int j) -> bool{return arr(i)>arr(j);};
std::sort(ind.data(), ind.data()+ind.size(), rule);
cout<<"ind ="<<ind<<endl;
// data return the pointer of first element
//sorted_arr.resize(arr.size());
for (int i=0; i<arr.size();i++)
{
//cout<<"---"<<i<<" "<<ind(i)<<" "<<arr(ind(i))<<endl;
sorted_arr(i)=arr(ind(i));
}
//cout<<sorted_arr<<endl;
return sorted_arr;
}
same as function np.argsort()
in Python