Eigen :: DenseBase没有数据成员

时间:2018-11-09 17:19:55

标签: eigen

为什么Eigen::DenseBase<Derived>没有data()方法?

我认为密集阵列在内存中将是连续的。

DenseBase也有块吗?

template <typename Derived>
void f(Eigen::DenseBase<Derived>& x) {
    std::sort(x.data(), x.data() + x.size());
}

ArrayBase也没有数据方法。

解决方法:

template <typename Derived>
void f(Eigen::DenseBase<Derived>& x) {
    std::sort(&x[0], &x[0] + x.size());  // sort the whole vector
}

1 个答案:

答案 0 :(得分:1)

DenseBase是任何密集表达式(包括A+BA*B等)的基类。如果只想调用std::sort,则移到Eigen的头上,然后写:

std::sort(x.begin(), x.end());

如果您传递给f的表达式具有.data()成员,您仍然可以按以下方式访问它:x.derived().data()