Dav*_*fau 8 foreach eigen c++11
是否可以使用带有特征矩阵的C++ 11的foreach语法?例如,如果我想计算矩阵的总和(我知道有一个内置函数,我只想要一个简单的例子)我想做类似的事情
Matrix2d a;
a << 1, 2,
3, 4;
double sum = 0.0;
for(double d : a) {
sum += d;
}
Run Code Online (Sandbox Code Playgroud)
然而,Eigen似乎并不允许它.有没有更自然的方法来对特征矩阵的元素进行foreach循环?
可以使用成员函数 获得指向矩阵数据数组的指针.data()。
数据数组的大小也可以使用成员函数获得.size()。
使用这两个,我们现在拥有指向数组的第一个元素和末尾的指针,如a.data()和a.data()+a.size()。
另外,我们知道 anstd::vector可以使用迭代器(或者在我们的例子中是数组指针)来初始化。
因此,我们可以获得用 包裹矩阵元素的双精度向量std::vector<double>(a.data(), a.data()+a.size())。
该向量可以与代码片段中包含的基于范围的 for 循环语法一起使用,如下所示:
Matrix2d a;
a << 1, 2,
3, 4;
double sum = 0.0;
for(double d : std::vector<double>(a.data(), a.data()+a.size())) {
sum += d;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2915 次 |
| 最近记录: |