是否有一种标准方法可以在C ++中获取数字类型的0和1。在编写使用以下类型模板化的线性代数例程时,这非常有用:int
,double
,unsigned int
,...
我在考虑
static_cast<T>(0)
但我想知道是否有更好的方法。
答案 0 :(得分:3)
通常只有0
和1
会好,让促销规则做正确的事情。
如果您想确保他们已转换为预期类型,请使用T(0)
和T(1)
。
(正如其他答案所指出的那样,你可以从价值初始化中获得零值,T()
或T{}
。但是没有类似的方法来获得1
;在我看来,为了节省单个角色,(略微)降低清晰度的一点点。)
答案 1 :(得分:1)
在C ++ 11中,我更喜欢使用T {}
。好的一点是它适用于任何默认构造类型。
答案 2 :(得分:1)
初始化为默认值的原生数据类型为initialized to zero。
int a = int(); // 0
double b = double(); // 0.0
T x = T(); // same as static_cast<T>(0) for T as a native type
答案 3 :(得分:0)
我会使用(T)0
基本上你已经使用的东西。如果你在线性代数系统附近实现任何东西,你可以考虑将所有类型的所需数字包装在一个consistens基类中,允许更多的结构表示字段,环等。