C++标准模板(STL)- 类型支持 (数值极限,提供查询所有基础数值类型的性质的接口,numeric_limits)

数值极限

定义于头文件 <limits>

numeric_limits

提供查询所有基础数值类型的性质的接口。
(类模板)
std::numeric_limits

template< class T > class numeric_limits;

numeric_limits 类模板提供查询各种算术类型属性的标准化方式(例如 int 类型的最大可能值是 std::numeric_limits<int>::max() )。

通过 numeric_limits 模板的特化提供此信息。标准库为所有算术类型制定可用的特化:

定义于头文件 <limits>

template<> class numeric_limits<bool>;

template<> class numeric_limits<char>;
template<> class numeric_limits<signed char>;
template<> class numeric_limits<unsigned char>;
template<> class numeric_limits<wchar_t>;
template<> class numeric_limits<char8_t>;    // C++20 特性
template<> class numeric_limits<char16_t>;   // C++11 特性
template<> class numeric_limits<char32_t>;   // C++11 特性
template<> class numeric_limits<short>;
template<> class numeric_limits<unsigned short>;
template<> class numeric_limits<int>;
template<> class numeric_limits<unsigned int>;
template<> class numeric_limits<long>;
template<> class numeric_limits<unsigned long>;
template<> class numeric_limits<long long>;
template<> class numeric_limits<unsigned long long>;
template<> class numeric_limits<float>;
template<> class numeric_limits<double>;

template<> class numeric_limits<long double>;

另外,对于每个算术类型的每个 cv 限定版本存在特化,等同于非限定的特化,例如提供 std::numeric_limits<const int>std::numeric_limits<volatile int>std::numeric_limits<const volatile int> ,且它们等价于 std::numeric_limits<int>

作为算术类型别名的标准库类型(例如 std::size_t 或 std::streamsize )也可以用 std::numeric_limits 类型特性检测。

非算术标准类型,例如 std::complex<T> 或 std::nullptr_t ,无特化。

实现可以对实现指定的类型提供 std::numeric_limits 的特化:例如 GCC 提供 std::numeric_limits<__int128> 。非标准库可以为库所提供的类型添加特化,例如 OpenEXR 为 16 位浮点类型提供 std::numeric_limits<half> 。

模板参数

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

成员常量

is_specialized

[静态]

鉴别 std::numeric_limits 是否为该类型特化
(公开静态成员常量)

is_signed

[静态]

鉴别有符号类型
(公开静态成员常量)

is_integer

[静态]

鉴别整数类型
(公开静态成员常量)

is_exact

[静态]

鉴别准确表示的类型
(公开静态成员常量)

has_infinity

[静态]

鉴别能表示特殊值“正无穷大”的浮点类型
(公开静态成员常量)

has_quiet_NaN

[静态]

鉴别能表示特殊值“安静的非数”( NaN )的浮点类型
(公开静态成员常量)

has_signaling_NaN

[静态]

鉴别能表示特殊值“发信的非数”( NaN )的浮点类型
(公开静态成员常量)

has_denorm

[静态]

鉴别浮点类型所用的非正规风格
(公开静态成员常量)

has_denorm_loss

[静态]

鉴别浮点类型是否检测精度损失为非正规损失,而非不准确结果
(公开静态成员常量)

round_style

[静态]

鉴别类型所用的舍入模式
(公开静态成员常量)

is_iec559

[静态]

鉴别 IEC 559/IEEE 754 浮点类型
(公开静态成员常量)

is_bounded

[静态]

鉴别表示有限值集合的类型
(公开静态成员常量)

is_modulo

[静态]

鉴别以模算术处理溢出的类型
(公开静态成员常量)

digits

[静态]

能无更改地表示的 radix 位数
(公开静态成员常量)

digits10

[静态]

能无更改地表示的十进制位数
(公开静态成员常量)

max_digits10

[静态] (C++11)

区别所有此类型值所需的十进制位数
(公开静态成员常量)

radix

[静态]

给定类型的表示所用的基或整数底
(公开静态成员常量)

min_exponent

[静态]

底的该数次幂是合法正规浮点值的最小负数加一
(公开静态成员常量)

min_exponent10

[静态]

10 的该数次幂是合法正规浮点值的最小负数
(公开静态成员常量)

max_exponent

[静态]

底的该数次幂是合法有限浮点值的最大整数加一
(公开静态成员常量)

max_exponent10

[静态]

10 的该数次幂是合法有限浮点值的最大整数
(公开静态成员常量)

traps

[静态]

鉴别可能导致算术运算出现陷阱的类型
(公开静态成员常量)

tinyness_before

[静态]

鉴别检测舍入前是否非正规的浮点类型
(公开静态成员常量)

成员函数

min

[静态]

返回给定类型的最小有限值
(公开静态成员函数)

lowest

[静态] (C++11)

返回给定类型的最低有限值
(公开静态成员函数)

max

[静态]

返回给定类型的最大有限值
(公开静态成员函数)

epsilon

[静态]

返回 1.0 与给定类型的下个可表示值的差
(公开静态成员函数)

round_error

[静态]

返回给定浮点类型的最大舍入误差
(公开静态成员函数)

infinity

[静态]

返回给定类型的正无穷大值
(公开静态成员函数)

quiet_NaN

[静态]

返回给定浮点类型的安静 NaN 值
(公开静态成员函数)

signaling_NaN

[静态]

返回给定浮点类型的发信的 NaN
(公开静态成员函数)

denorm_min

[静态]

返回给定浮点类型的最小正非正规值
(公开静态成员函数)

辅助类

float_round_style

指示浮点舍入模式
(枚举)

float_denorm_style

指示浮点非规格化模式
(枚举)

 与 C 库宏常量的关系

特化成员
min()lowest()
(C++11)
max()epsilon()digitsdigits10min_exponentmin_exponent10max_exponentmax_exponent10radix
numeric_limits< bool >2
numeric_limits< char >CHAR_MINCHAR_MINCHAR_MAX2
numeric_limits< signed char >SCHAR_MINSCHAR_MINSCHAR_MAX2
numeric_limits< unsigned char >​0​​0​UCHAR_MAX2
numeric_limits< wchar_t >WCHAR_MINWCHAR_MINWCHAR_MAX2
numeric_limits< char8_t >​0​​0​UCHAR_MAX2
numeric_limits< char16_t >​0​​0​UINT_LEAST16_MAX2
numeric_limits< char32_t >​0​​0​UINT_LEAST32_MAX2
numeric_limits< short >SHRT_MINSHRT_MINSHRT_MAX2
numeric_limits< unsigned short >​0​​0​USHRT_MAX2
numeric_limits< int >INT_MININT_MININT_MAX2
numeric_limits< unsigned int >​0​​0​UINT_MAX2
numeric_limits< long >LONG_MINLONG_MINLONG_MAX2
numeric_limits< unsigned long >​0​​0​ULONG_MAX2
numeric_limits< long long >LLONG_MINLLONG_MINLLONG_MAX2
numeric_limits< unsigned long long >​0​​0​ULLONG_MAX2
numeric_limits< float >FLT_MIN-FLT_MAXFLT_MAXFLT_EPSILONFLT_MANT_DIGFLT_DIGFLT_MIN_EXPFLT_MIN_10_EXPFLT_MAX_EXPFLT_MAX_10_EXPFLT_RADIX
numeric_limits< double >DBL_MIN-DBL_MAXDBL_MAXDBL_EPSILONDBL_MANT_DIGDBL_DIGDBL_MIN_EXPDBL_MIN_10_EXPDBL_MAX_EXPDBL_MAX_10_EXPFLT_RADIX
numeric_limits< long double >LDBL_MIN-LDBL_MAXLDBL_MAXLDBL_EPSILONLDBL_MANT_DIGLDBL_DIGLDBL_MIN_EXPLDBL_MIN_10_EXPLDBL_MAX_EXPLDBL_MAX_10_EXPFLT_RADIX

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac PF命令防火墙

查看所有网络接口及其名称 ifconfig -a 文件目录&#xff1a;/etc/pf.conf 在文件末尾添加以下行&#xff1a; block drop from IP_ADDRESS其中&#xff0c;"IP_ADDRESS"是您要屏蔽的IP地址。 输入以下命令以重新加载pf防火墙配置文件&#xff1a; sudo pfctl …

boost在不同平台下的编译(win、arm)

首先下载boost源码 下载完成之后解压 前提需要自行安装gcc等工具 window ./bootstrap.sh ./b2 ./b2 installarm &#xff08;linux&#xff09; sudo ./bootstrap.sh sudo ./b2 cxxflags-fPIC cflags-fPIC linkstatic -a threadingmulti sudo ./b2 installx86 (linux) su…

矩阵求导数

矩阵 A ∣ 1 2 1 2 − 1 3 ∣ , 计算 f ( x ) ∣ ∣ A x ∣ ∣ 2 ∣ ∣ x ∣ ∣ 2 的最大值。 矩阵A \begin {vmatrix} 1 & 2 & 1\\2 & -1 & 3 \end {vmatrix},计算f(x) \frac{||Ax||_2}{||x||_2}的最大值。 矩阵A ​12​2−1​13​ ​,计算f(x)∣∣x∣∣2…

css圣杯布局和双飞翼布局

圣杯布局 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, in…

第8期ThreadX视频教程:应用实战,将裸机工程移植到RTOS的任务划分,驱动和应用层交互,中断DMA,C库和中间件处理等注意事项

视频教程汇总帖&#xff1a;【学以致用&#xff0c;授人以渔】2023视频教程汇总&#xff0c;DSP第12期&#xff0c;ThreadX第8期&#xff0c;BSP驱动第26期&#xff0c;USB实战第5期&#xff0c;GUI实战第3期&#xff08;2023-10-01&#xff09; - STM32F429 - 硬汉嵌入式论坛 …

HD-G2UL-GW高性能4G工业网关|介绍|参数

HD-G2UL-GW多功能型网关基于高性能低功耗 ARM 处理器设计&#xff0c;集成 4G、2路网口、4 路 RS-485、2路 RS-232&#xff08;与485有复用&#xff09;、WIFI等功能&#xff0c;在电力、环保、节能、消防、农业等领域有广泛应用。 HD-G2UL-GW板载的外设功能&#xff1a; 集成2…

10-Node.js入门

01.什么是 Node.js 目标 什么是 Node.js&#xff0c;有什么用&#xff0c;为何能独立执行 JS 代码&#xff0c;演示安装和执行 JS 文件内代码 讲解 Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff0c;因为这个特点&#xff0c;它可以用来…

虚拟环境搭建、后台项目创建及目录调整、封装logger、封装全局异常、封装Response、后台数据库创建

1 虚拟环境搭建 #1 虚拟环境作用多个项目&#xff0c;自己有自己的环境&#xff0c;装的模块属于自己的# 2 使用pycharm创建-一般放在项目路径下&#xff1a;venv文件夹-lib文件夹---》site-package--》虚拟环境装的模块&#xff0c;都会放在这里-scripts--》python&#xff0…

【C++】面向对象编程(四)派生类

派生类 由两部分构成&#xff1a; 基类构成的子对象&#xff1b;派生类的部分。 #include"num_sequence.h"//基类的定义必须已经存在class Fibonnacci : public num_sequence{ public://... };必须为从基类继承而来的每个纯虚函数提供对应的实现&#xff1b;必须声明…

pom.xml里的标签

pom.xml 是 Maven 项目的配置文件&#xff0c;其中包含了各种配置信息和依赖管理。下面是一些常见的 pom.xml 中的标签和其作用的简要说明&#xff1a; <project>&#xff1a;根标签&#xff0c;定义了整个项目的基本信息和结构。 <groupId>&#xff1a;指定项目所…

Arcgis日常天坑问题(1)——将Revit模型转为slpk数据卡住不前

这段时间碰到这么一个问题&#xff0c;revit模型在arcgis pro里导出slpk的时候&#xff0c;卡在98%一直不动&#xff0c;大约有两个小时。 首先想到的是revit模型过大&#xff0c;接近300M。然后各种减小模型测试&#xff0c;还是一样的问题&#xff0c;大概花了两天的时间&am…

如何选择合适的智能工单管理系统?智能工单系统有什么优势?

在当今社会&#xff0c;单位的运营和管理面临着越来越多的挑战。其中&#xff0c;设备的维护和保养是单位日常运营中的重要环节。然而&#xff0c;传统的工单管理方式存在着诸多问题&#xff0c;如报修效率低下、人工成本高昂、维修品质参差不齐等。为了解决这些问题&#xff0…

基于Http Basic Authentication的接口

Basic Authenrication是 HTTP 用户代理提供用户名的一种方法 &#xff0c;它是对 Web 资源实施访问控制的最简单技术&#xff0c;它不需要 Cookie、会话标识符和登录页面。HTTP Basic身份验证使用静态的标准HTTP标头&#xff0c;这意味着 不必在预期中进行握手。 当用户代理想…

自动驾驶传感器技术

自动驾驶传感器技术是自动驾驶系统的关键组成部分&#xff0c;它使车辆能够感知并理解周围环境。本文将深入探讨自动驾驶传感器技术&#xff0c;包括常见类型、工作原理以及它们在自动驾驶中的作用。 1. 摄像头 摄像头的工作原理 摄像头是基于光学原理的传感器&#xff0c;其…

C++入门(文件结构)

1.一般情况下&#xff0c;一个C程序中只包含两类文件&#xff1a;.cpp文件和.h文件。其中&#xff1a; .cpp文件被称作C源文件&#xff0c;里面放的都是C的源代码&#xff1b; .h文件则被称作C头文件&#xff0c;里面放的也是C的源代码。 2.一般在 头文件中进行函数, 变量声…

产品经理需要掌握哪些产品专业知识?

作为产品经理&#xff0c;最重要的是洞察客户的需求、理解客户的需求、掌握客户的需求&#xff0c;所以&#xff0c;第一件事情就是要有清晰的战略方向&#xff0c;我们到底梦想是什么&#xff1f;要做什么&#xff1f;能做什么&#xff1f;在哪儿做&#xff1f;谁负责去做&…

MySQL 慢查询

1. MySQL 慢查询定位 1.1 MySQL 慢查询日志格式 --MySQL 慢查询日志格式 1&#xff09;Time 日志的记录时间 2) UserHost 执行SQL的用户和主机 3) Query_time SQL执行的耗时时间 4) Lock_time 锁表的时间 5) Rows_sent SQL返回的执行记录条数 6) Rows_examined SQL语句扫描的…

Stm32_标准库_7_光敏传感器

AO端口&#xff1a;通俗的讲大概是根据环境亮度的不同导致电阻的阻值不同&#xff0c;最后AO口输出的模拟量也不同&#xff0c;这个端口是用来测量环境光照的具体强度 DO端口&#xff1a;光敏电阻默认设置了一个阈值&#xff0c;当光照强度高于这个阈值本端口输出低电平&#…

IDEA的database工具以及对比两个数据库之间的差异(比DBVisualizer和DBeaver方便)

背景 其实IDEA里有个非常好用的database工具&#xff0c;用来连数据库&#xff0c;能连的数据非常多&#xff0c;最重要的是还带有对比数据库差异的工具。 唯一有点不好就是这个是 intellij idea的ultimate edition版本才有&#xff0c;对于社区版本&#xff08;community ed…

Linux系统及Docker安装RabbitMq

目录 一、linux系统安装 1、上传文件 2、在线安装依赖环境 3、安装Erlang 4、安装RabbitMQ 5、开启管理界面及配置 6、启动 7、删除mq 二、docker安装 1、上传mq.tar包或使用命令拉取镜像 2、启动并运行 3、访问mq 一、linux系统安装 1、上传文件 2、在线安装依赖环…