37-新增的库
18.7.2 新增的库
C++11添加了多个专用库。头文件random支持的可扩展随机数库提供了大量比rand() 复杂的随机数工具。例如,您可以选择随机数生成器和分布状态,分布状态包括均匀分布(类似于rand())、二项式分布和正态分布等。
头文件chrono提供了处理时间间隔的途径。
头文件tuple支持模板tuple。tuple对象是广义的pair对象。pair对象可存储两个类型不同的值,而tuple对象可存储任意多个类型不同的值。
头文件ratio支持的编译阶段有理数算术库让您能够准确地表示任何有理数,其分子和分母可用最宽的整型表示。它还支持对这些有理数进行算术运算。
在新增的库中,最有趣的一个是头文件regex支持的正则表达式库。正则表达式指定了一种模式,可用于与文本字符串的内容匹配。例如,方括号表达式与方括号中的任何单个字符匹配,因此[cCkK]与c、C、k和K都匹配,而[cCkK] at与单词cat、Cat、kat和Kat都匹配。其他模式包括与一位数字匹配的\d、与一个单词匹配的\w、与制表符匹配的\t等。在C++中,斜杠具有特殊含义,因此对于模式\d\t\w\d(即依次为一位数字、制表符、单词和一位数字),必须写成字符字面量“\d\t\w\d”,即使用\表示\。这是引入原始字符串的原因之一(参见第4章),它让您能够将该模式写成R“\d\t\w\d”。
ed、grep和awk等UNIX工具都使用正则表达式,而解释型语言Perl扩展了正则表达式的功能。C++正则表达式库让您能够选择多种形式的正则表达式。