C++学习笔记(2)std::numeric_limits数值极限模板类的使用

简介

std::numeric_limits类模板定义在头文件<limits>中,提供查询多种算术类型的属性的标准化方式
比如int类型的最大值为std::numeric_limits<int>::max()
如何提供这些信息呢?
模板特化!
标准库为所有的类模板都制定可用的特化,例如:
在这里插入图片描述

  1. std::numeric_limits 针对有 cv(constant value) 限定的类型 cv T 的特化的每个成员的值都与对无 cv 限定的类型 T 的特化的对应成员的值相同。例如 std::numeric_limits<int>::digits 等于std::numeric_limits<const int>::digits
  2. 算术类型的别名(例如 std::size_t 或 std::streamsize)也可以用 std::numeric_limits 类型特征予以检测。
  3. 非算术标准类型,例如 std::complex<T>std::nullptr_t,没有特化。
  4. 实现可以对实现特定的类型提供 std::numeric_limits 的特化:例如 GCC 提供 std::numeric_limits<__int128>。非标准的库可以为库所提供的类型添加特化,例如 OpenEXR 为 16 位浮点数类型提供 std::numeric_limits<half>

模板参数

template< class T > class numeric_limits;

T为要获取数值属性的类型

成员常量

挑几个讲

is_specialized

在这里插入图片描述

has_quiet_NaN

是否为静默非数(可以在错误的计算中传播下去,方便后续处理或调试,如果为signaling NaN会直接抛出异常)
只有浮点型才有NaN,has_quiet_NaN用于鉴别该浮点型能不能表示quiet NaN
在这里插入图片描述

bool 类型常量

在这里插入图片描述

数值类型常量

在这里插入图片描述

成员函数

在这里插入图片描述

max

在这里插入图片描述

infinity

在这里插入图片描述

quiet_NaN

在这里插入图片描述

辅助类

在这里插入图片描述

如何根据自己的需要对模板进行特化?

在这里插入图片描述

static!

constexpr!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值