当两个向量求和时,我使用auto和Vector得到了不同的结果。
我的代码:
#include "stdafx.h"
#include <iostream>
#include "D:\externals\eigen_3_1_2\include\Eigen\Geometry"
typedef Eigen::Matrix<double, 3, 1> Vector3;
void foo(const Vector3& Ha, volatile int j)
{
const auto resAuto = Ha + Vector3(0.,0.,j * 2.567);
const Vector3 resVector3 = Ha + Vector3(0.,0.,j * 2.567);
std::cout << "resAuto = " << resAuto <<std::endl;
std::cout << "resVector3 = " << resVector3 <<std::endl;
}
int main(int argc, _TCHAR* argv[])
{
Vector3 Ha(-24.9536,-29.3876,65.801);
Vector3 z(0.,0.,2.567);
int j = 7;
foo(Ha,j);
return 0;
}
结果是:
resAuto=-24.9536,-29.3876,65.801
resVector3=-24.9536,-29.3876,83.77
按任意键继续...
我知道Eigen会进行内部优化,从而产生不同的结果。但它看起来像是Eigen和C11中的一个bug。
auto
关键字告诉编译器根据=
的右侧“猜测”最佳对象。您可以通过添加
std::cout << typeid(resAuto).name() <<std::endl;
std::cout << typeid(resVector3).name() <<std::endl;
tofoo
(别忘了包含
在这种情况下,在构造临时的
Vector3
之后,调用操作符
方法,该方法创建CwiseBinaryOp
对象。此对象是特征值惰性评估的一部分(可以提高性能)。如果您想要强制执行急切求值(从而确定类型),可以使用
const auto resAuto = (Ha + Vector3(0.,0.,j * 2.567)).eval();
而不是你在
foo
中的行。
一些附带说明:
Vector3
与在Eigen
中定义的Vector3d
类相同
我在Anylogic模型中有数据库c2d\U自拾取: 我必须使用QueryDSL通过SCid和PVZid找到c2d_lm值: 如果我选择下一对: 我希望查询返回,其中一个值(行号8),但它返回7个值: 我做错了什么? 谢谢。
我试图从我的数据库中得到一些数据,但我不会得到正确的结果。 我的方法: 所以应该有一个确切的结果,但我从控制台得到的全部是:日期的范围是从今天(6月12日-2周) CEST 2012年Tue Jun 12 14:49:11 2012年东部时间5月30日星期三14:49:11
导入java.util.Scanner;公共类GroupActivity{公共静态void main()
我使用Spring Redis和@Cacheable注释来实现两种方法。当我调用一个方法时,我会得到另一个方法的缓存结果。 当我使用@Cachebale注释为每个方法配置不同的缓存时,怎么可能从错误的缓存中得到结果? 安装:Spring版本4.1.6。Redis data 1.5和Redis client 2.7.0。 示例代码:
我正在寻找变量的差异。当差异大于时,我希望将其标记为。以下是我尝试的: 为什么在这里被标记为?
我试着从两个表中提取带有union的数据,并通过“created_at”DESC对它们进行排序- 代码: 我得到的查询是: 我希望得到的查询: 知道为什么吗? 我的laravel版本是:V4.2.8 相关主题:https://github.com/laravel/framework/pull/3901 谢谢你的帮助!