我必须使用EIGEN在for循环中使用值填充向量。我正在尝试类似的东西...
#include#include using namespace std; using namespace Eigen; int main(){ VectorXd s; for (int i=0,i<10;i++){ s(i) = (double) i; } return 0; }
我可以编译它,但是当我运行程序时出现此错误:
动态:/usr/include/Eigen/src/Core/DenseCoeffsBase.h:425:Eigen :: DenseCoeffsBase :: Scalar&Eigen :: DenseCoeffsBase :: operator()(Eigen :: Index)[with Derived = Eigen :: Matrix; Eigen :: DenseCoeffsBase :: Scalar = double; Eigen :: Index = int]:断言`index> = 0 && index
我知道我可以使用std :: vector类轻松实现这一点,但是我想用特征值来实现,因为在那之后我必须做很多矩阵运算。
谢谢!
编辑:对于我的应用程序,我在编译时不知道向量的大小。我想找出是否有类似vector::push_back
本征的类似方法。
您忘记为向量保留空间。这与相同std::vector
。
尝试这个
#include#include int main() { // resize to 10 elements auto vec = Eigen::VectorXd(10); for (int i = 0; i < vec.size(); ++i) { vec[i] = i; } std::cout << vec << '\n'; }