C++11x 和 Eigen 库

标签 c++ c++11 eigen

我想编译一个程序,我在其中初始化一个复杂的矩阵 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/

相关文章:

C++ 类成员和延迟初始化

c++ - 编译创建 Eigen::ThreadPoolDevice 对象的代码时出错

具有 move 语义的 C++ 可变工厂导致运行时崩溃

c++ - 让模板采用类型或值

c++ - 如何从自动返回类型推导出类型?

c++ - C++11 是否要求分配器是默认可构造的,libstdc++ 和 libc++ 不同意?

c++ - 将 `Eigen::VectorXd` 的集合合并为一个大的 `Eigen::VectorXd`

c++ - Eigen:有效地将矩阵评估的输出存储在原始指针中

c++ - 如何将 XML 节点转换为 C++ 结构?

c++ - 接受并返回 lambda(锁包装器)