gpt4 book ai didi

c++ - 在访问 Eigen::VectorXd 时使用零作为第二个索引是否安全?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:34:48 30 4
gpt4 key购买 nike

Eigen::VectorXd有一个 Scalar operator()(Index i)它返回索引处的系数 i在 vector 中。然而,由于 Eigen::VectorXd是一种特殊类型的 Eigen::Matrix ,即 Eigen::Matrix<Scalar, Eigen::Dynamic, 1>; 类型, 还有一个 Scalar operator()(Index i, Index j) .

问题:

如果我设置 j,我可以假设使用第二个版本是安全的(即没有未定义的行为)吗?归零?也就是说,下面的代码可以吗?

Eigen::VectorXd v(4);
v << 1, 2, 3, 4;
std::cout << v(2, 0); // displays 3

看起来没问题,在 Debug模式下编译并打开所有警告时没有失败的断言或警告,但我不是 100% 确定。

最佳答案

只要 v 是列 vector 就是安全的,而使用 v(i) 对列 vector 和行 vector 都有效,例如:

template<typename T>
void foo(const T &v) {
v(2); // OK
v(2,0); // -> out of bounds runtime assertion
}
MatrixXd mat(10,10);
foo(mat.row(5));

关于c++ - 在访问 Eigen::VectorXd 时使用零作为第二个索引是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40008166/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com