转载:http://blog.csdn.net/panker2008/article/details/46270875
1:标准c++库和stl库
理解两个库,大致就一句话:stl是c++标准库的一个子集,c++的标准库主要有三部分:c标准库的c++版本;c++的IO库;c++的STL库
C标准库的c++版本:原来的c版本是<*.h>,c++版本是<c*>
C++的IO库:最常用的是iostream,fstream
C++的stl库:下面会详细理解
c++标准库百度百科上给的解释:
它是类库和函数的集合,其使用核心语言写成,由c++标准委员会制定,并不断的维护和更新的库,c++的标准库文件总共在50个标准头文件中定义,
在c++的开发中尽量的使用标准库的好处:
1、成本低 2、质量 3、效率 4、良好的编程风格
标准库分为10类:
C++标准库
1、标准库中与语言支持功能相关的头文件
1、<cstddef>
定义宏NULL和Offsetof,以及其他标准类型的size_t和ptrdiff
2、<limits>
提供与基本数据类型相关的定义。例如,对于每个数值数据类型,它定义了可以表示出来的最大值和最小值以及二进制数字的位数。
3、<climits>
提供了与基本整数数据类型相关的C样式定义。这些信息的c++样式定义在<limits>中
4、<cfloat>
提供与基本浮点型数据相关的C样式定义。这些c++的样式定义在<limits>中
5、<cstdlib>
提供支持程序启动和终止的宏和函数。这个头文件还声明了许多其他杂项函数,例如搜索和排序函数,从字符串转换成数值的函数, 他与对应的标准c头文件stdlib.H不同,定义了abort(VOID).abort函数还有额外的功能,它不为静态或者自动对象调用析构函数,也不调用 atexit()函数,它还定义了exit()函数的额外功能,可以释放静态对象,以注册的逆序调用用atexit注册的函数。清楚并关闭所打开的c流,把 控制权返回给主机环境
6、<new>
支持动态内存分配
7、<typeinfo>
支持变量在运行期间的类型标识
8、<exception>
支持异常处理,这是处理程序中可能发生的错误的一种方式
9、<cstdarg>
支持接收数量可变的参数的函数,记载调用函数时,可以给函数传送数量不等的数据项,他定义了宏va_arg,va_end,va_start,以及va_list类型
10、<csetjmp>
为c样式的非本地跳跃提供函数。这些函数在c++中不常用
11、<csignal>
为中断处理体从c样式支持
2、支持流输入输出的头文件
1、<iostream>
支持标准流cin、cout、cerr和clog的输入和输出,并且支持多字节的输入输出
2、<iomanip>
提供操纵程序,允许改变流的状态,从而改变输出的格式
3、<ios>
定义iostream的基类
4、<istream>
为管理输出流缓存区的输出定义模板类
5、<ostream>
为管理输出流缓存区的输出定义模板类
6、<sstream>
支持字符串的流输入输出
7、<fstream>
支持文件流输入输出
8、<iosfwd>
为输入输出对象提供 向前的声明
9、<streambuf>
支持流输入和输出的缓存
10、<cstdio>
为标准流提供c样式的输入输出
11、<cwchar>
支持多字节字符的输入输出
3、与诊断功能相关的头文件
1、<stdexcept>
定义标准异常。异常时处理错误的方式
2、<cassert>
定义断言宏,用于检查运行期间的情形
3、<cerrno>
支持c样式的错误信息
4、定义工具函数的头文件
1、<utility>
定义重载的关系运算符,简化关系运算符的写入,它还定义了pair类型
2、<functional>
定义了许多函数对象类型和支持函数对象的功能,函数对象是支持operator()函数调用运算符的任意对象
3、<memory>
给容器、管理内存的函数和auto_ptr模板类定义标准内存分配器
4、<ctime>
支持系统时钟函数
5、支持字符串处理的头文件
1、<string>
为字符串类型提供支持和定义
2、<cctype>
单字节字符类别
3、<cwctype>
多字节字符类别
4、<cstring>
为处理非空字节序列和内存块提供函数,这不同于对用的标准的c库头文件, 几个c样式字符串的一般c库函数被返回值为const和非const的函数对替代了
5、<cwchar>
为处理执行I/O和转换多字节序列提供函数,这不同于对应的标准c库头文件
6、<cstdlib>
为把单字节字符串转换为数值、在多字节字符和多字节字符串之间提供函数
6、定义容器类的模板的头文件
1、<vertor>
定义vector序列模板,这是一个大小可以重新设置的数组类型,比普通的数组更安全,更灵活
2、<list>
定义list序列模板,这是一个序列的链表,常常在任意位置插入和删除元素
3、<deque>
定义deque序列模板,支持在开始和结尾的高效插入和删除操作
4、<queue>
为队列(先进先出)数据结构定义序列适配器queue和priority_queue
5、<stack>
为堆栈(后进先出)数据结构定义序列适配器stack
6、<map>
map是一个关联容器类型,允许根据键值是唯一的,且按照升序存储。
7、<set>
set是一个关联容器类型,用于以升序方式存储唯一值。
8、<bitset>
为固定长度的位序列定义bitset模板,它可以看做固定长度紧凑型bool数组
7、支持迭代器的头文件
1、<iterator>
给迭代器提供定义和支持
8、有关算法的头文件
1、<algorithm>
提供一组给予算法的函数,包括置换、排序、合并和搜索
2、<cstdlib>
声明C标准库函数bsearch()和qsort(),进行搜索和排序
3、<ciso646>
允许在代码中使用and代替&&
9、有关数值操作的头文件
1、<complex>
支持复杂数值的定义和操作
2、<valarray>
支持数值矢量的操作
3、<numeric>
在数值序列上定义一组一般数学操作
4、<cmath>
这是c数学库,其中还附加了重载函数,以支持c++约定
5、<cstdlib>
提供的函数可以提取整数的绝对值,对整数进行取余数操作
10、有关本地化的头文件
1、<locale>
提供的本地化包含字符类别,排序序列以及货币和日期表示
2、<clocale>
对本地化提供c样式支持
将上面做成了pdf类似框架图的格式
大致的了解了一下标准库;后面再详细所stl