标准库
C++标准库
C++标准定义了庞大且功能丰富的标准库,其内容分为10类,包括:
- C1语言支持
- C2输入/输出
- C3诊断功能
- C4通用工具
- C5字符串
- C6容器
- C7迭代器
- C8算法
- C9数值操作
- C10本地化
C++标准库所有的头文件都没有扩展名(.h),内容总共在51个标准头文件中定义。其中18个< cname >形式的头文件( < complex > 除外)内容与标准C语言的name.h头文件相同,但包含了C++扩展的功能
在< cname >形式的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明
另外,在C++中还可以使用name.h形式的C语言头文件,但不建议这样用
C++标准库由三组库构成:
(1)C库: 由C标准库拓展而来,强调结构,函数和过程,不支持面对对象技术
(2)C++库: 增加了面向对象的库,包含了具有关键功能的类
(3)标准模板库(STL): 高效的C++程序库。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法
以上库文件都被定义在namespace std中
C++库可以不规定头文件的扩展名
1.C标准库
(1)< cmath >:提供给了22个不同的数学函数,如abs(),sqrt(),exp()等
(2)< cstdlib >:提供了常用的数学函数,3个特殊函数和2个常量
- exit():退出程序,清理静态对象
- abort():强制退出程序
- atexit():将一个函数作为参数并在程序退出时调用
- EXIT_SUCCESS:程序已经正常完成
- EXIT_FAULURE:程序正常结束
(3)< cassert >:定义了一个函数assert,用来测试一个条件,并在条件为假时强制程序退出。通常用来判断内存分配是否成功
(4)< cctype >:提供了确定字符类型的功能。可以判断一个字符是否为数字字符,图形字符,小写,大写或空格,并可以将字符进行大小写转换
(5)< cerrno >:定义了一个变量,用它可以确定程序中发生的错误的类型
2.C++类库
(1)< string >:支持字符串处理的类库
(2)< complex >:提供了复数的表示和算法
- float_complex类
- double_complex类
- long_double_complex类
(3)< ios >:定义了I/O流类的虚基类ios,通常不直接用它
(4)< iostream >:标准I/O流类库,提供了cin,cout等全局对象类来支持输入输出功能
(5)< istream >:输入流类库
(6)< ostream >:输出流类库
(7)< fstream >:读写文件的类
3.标准模板库STL
在标准库中,容器,迭代器,算法和数值操作合称为标准模板库
STL被组织为以下13个头文件:< algorithm >,< deque >,< functional >,< iterator >,< vector >,< list >,< map >,< memory >,< numeric >,< queue >,< set >,< stack >和< utility >
几乎所有的标准模板库代码都采用了类模板和函数模板的形式,因此相比于传统的由函数和类组成的库来说STL提供了更好的代码重用
(1)< algorithm >:提供了通用的算数算法和STL的一般算法
- sort:以升序重新排列范围内的元素
- swap:交换存储在两个对象中的值
- max_element:指出序列中最大的元素
- find:对范围内的元素进行查找
- copy:复制序列
- replace:将范围内的所有等于old_value的元素都用new_value替代
(2)< numeric >:提供给了4类对序列进行数字处理的算法
- accumulate():累加
- product():内乘
- Partial_sum():部分和
- adjacent_difference():邻接差值