如何正确初始化Eigen::Matrix<std::optional<int>>矩阵?
Eigen::Matrix<std::optional> 初始化方案
可以实现将矩阵初始化为std::nullopt,有几种简洁的方式:
1. 利用默认构造(最简便)
std::optional<int>的默认构造行为就是生成std::nullopt,因此直接默认构造Eigen矩阵时,所有元素会自动初始化为std::nullopt:
#include <Eigen/Core> #include <optional> int main() { // 2x2矩阵,所有元素默认是std::nullopt Eigen::Matrix<std::optional<int>, 2, 2> mat; return 0; }
2. 使用setConstant方法显式初始化
如果需要在矩阵创建后重新将所有元素设为std::nullopt,可以调用setConstant方法传入std::nullopt:
Eigen::Matrix<std::optional<int>, 3, 3> mat; // 将矩阵所有元素设置为std::nullopt mat.setConstant(std::nullopt);
3. 构造时直接指定常量初始化
可以在构造矩阵时,通过Constant静态方法直接生成全为std::nullopt的矩阵:
// 构造3x3矩阵,所有元素为std::nullopt auto mat = Eigen::Matrix<std::optional<int>, 3, 3>::Constant(std::nullopt);
内容的提问来源于stack exchange,提问作者OznOg
相关产品推荐
相关产品推荐

