【c++】标准库
一. 标准库概述
二.迭代器
三.算法
3.1.数据编辑算法
3.2.查找算法
3.3.比较算法
3.4.排序相关算法
3.5.计算相关算法
四.函数对象
五.适配器
六.字符串库
参考:《c++从入门到精通》人民邮电出版社
一. 标准库概述
C++标准库就好像设计图象时的图库一样,为c++程序员提供了可扩展的基础性框架,为程序设计带来了便利。本章介绍标准库的组成,STL中的迭代器、算法、函数对象、适配器以及字符串库等。
1.认识标准库
C++标准分为两部分:c++语言本身和c++标准库。
C++模板是对c++语言的一种扩展,模板是根据类型参数来产生函数和类的机制,也称模板为“参数化的类型”。使用模板,可以设计一个对多种数据类型进行操作的类,而不需要为每种类型建立一个单独的类。
标准库中的一切几乎都是模板。
2.标准库的组成
C++中标准库中的主要组件如图所示:
(1) 标准模板库STL:是基于模板的,是c++标准库中的重要组成部分。STL包括5大组件:容器、算法、迭代器、函数对象、适配器。
STL是基于数据和操作分离的,容器处理数据,算法数据操作,而迭代器则将它们结合起来。STL包含了很多在计算机科学领域里常用的基本数据结构和基本算法。
(2) C标准函数库:基本保持了与原C语言程序库的良好兼容。
(3) 语言支持:包含一些标准类型的定义以及其他特性的定义。
(4)诊断:用于程序诊断和报错,包含异常处理、断言、错误代码 三部分。
(5)通用工具:例如,动态内存管理工具,日期、时间处理工具。
(6)字符串:用来代表和处理文本。文本是一个string对象,可被看作是一个字符序列或者是容器。
(7)输入、输出:对原有标准库中的iostream进行模板化的部分,提供对c++程序输入输出的基本支持。
(8)数值:数字处理
(9)国际化:采用locale和facet为程序提供国际化支持,包括对各种字符集的支持,日期和时间的表示,数值和货币的处理,等等。
二.迭代器
每个容器都有自己的迭代器,可以把迭代器看作一个容器所使用的特殊指针,可以存取容器内存储的数据。
迭代器的功能表:
使用迭代器可对容器中的数据进行操作。下表列出了主要的操作,其中iter和iter1表示迭代器。
迭代器核心代码:
list<int>::iterator list1_iterator ;//定义列表的迭代器,相当于指针
for(list1_iterator=list1.begin(); list1_iterator !=list1.end(); list1_iterator++ )
{
if(*list1_iterator ==100 ) cnt++;
}
三. 算法
算法是STL的一个重要组成部分,它提供了数据处理函数,可用于操作各种容器。STL的算法被定义在<algorithm>头文件中。
STL中使用迭代器作为算法与容器间的媒介,算法要求的迭代器一定要与容器的迭代器相匹配,如sort算法使用随机迭代器,而list容器的迭代器仅为向前迭代器,所以sort算法无法在list容器上使用。
1.数据编辑算法
数据编辑算法用来对容器内的数据进行编辑操作,如数据的填充、复制、合并、删除和替换等。
函数 |
功能 |
格式 |
说明 |
fill |
用给定值初始化一个范围 |
Template<class ForwardIterator, class T> void fill( ForwardIterator first , ForwardIterator last, const T &value); |
用value值填充容器[first,last]范围 |
copy |
用于容器之间数据的复制 |
Templa |