我一辈子都想不出为什么这不正确。它似乎没有返回第k个元素。
typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> matrix;
double test(matrix& D, int k)
{
au到 d = D.row(1);
std::nth_element(d.data(),d.data()+k, d.data()+d.size());
return d(k) ;
}
我也试过
template <typename ScalarType, typename Derived>
void Sort(Eigen::MatrixBase<Derived> &xValues)
{
std::sort(xValues.derived().data(), xValues.derived().data()+xValues.derived().size());
}
double test(matrix& D, int k)
{
au到 d = D.row(1);
Sort<double>(d);
return d(k) ;
}
非常感谢您的帮助。
编辑
我刚试着改变
au到 d = D.row(1);
到
Eigen::Vec到rXd rowD = D.row(1);
....
and it seems 到 work ok.
对此有点困惑。