我想编译一个程序,我在其中初始化一个复杂的矩阵 MatrixXcd
在 Eigen 中使用
MatrixXcd M;
M.resize(length,length);
M(i,j).real()=f(i,j)
M(i,j).imag()=f(i,j)
其中 f(i,j) 是类型为 std::complex<double>
的某个函数我,j。一切正常,除非我使用 -std=c++0x
编译器选项,我确实需要。使用此选项时,出现错误:
error: lvalue required as left operand of assignment
上面这行代码,哪里出了问题?
最佳答案
将其更改为:
M(i, j) = f(i, j);
这已经只分配了实部。
如果要给定实部和虚部来分配一般复数,请使用例如
M(i, j) = std::complex<double>(f(i, j), g(i, j));
关于C++11x 和 Eigen 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31977643/