Я хотел бы расширить библиотеку C++ Eigen, чтобы включить команду v.sort(); Я использую подход, основанный на EIGEN_MATRIXBASE_PLUGIN, изложенный в here.Расширение собственной библиотеки для включения сортировки
Код ниже (в моем «MatrixBaseAddons.h») не работает, поскольку объект «результат» не загружается с копией «this» --- в отладчике «result.rows() "- это неинициализированное значение, не равное производному() -> rows(). Как я могу сделать копию «этого» и поместить ее в «результат»?
// DOES NOT WORK
MatrixBase<Derived> sort(bool ascending = true) const {
MatrixBase<Derived> result = derived();
result.sortInPlace(ascending);
return result;
}
// WORKS!
void sortInPlace(bool ascending = true) {
std::sort(derived().data(), derived().data() + derived().size());
if (!ascending)
this->reverseInPlace();
}