C++标准库和标准模板库 Standard C++ Library Overview Standard Template Library.docx
- 文档编号:28433949
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:12
- 大小:579.10KB
C++标准库和标准模板库 Standard C++ Library Overview Standard Template Library.docx
《C++标准库和标准模板库 Standard C++ Library Overview Standard Template Library.docx》由会员分享,可在线阅读,更多相关《C++标准库和标准模板库 Standard C++ Library Overview Standard Template Library.docx(12页珍藏版)》请在冰豆网上搜索。
C++标准库和标准模板库StandardC++LibraryOverviewStandardTemplateLibrary
C++标准库和标准模板库StandardC++LibraryOverview&StandardTemplateLibrary
1:
内容
C++强大的功能来源于其丰富的类库及库函数资源。
C++标准库的内容总共在50+2个标准头文件中定义:
C++头文件来源MSDN
2:
分类
涉及头文件
CStandardLibrary
C标准函数库:
基本保持了与原有C语言程序库的良好兼容,尽管有些微变化。
或许有一点会让你觉得奇怪,那就是在C++标准库中存在两套C的函数库,一套是带有.h扩展名的(比如
它们确实没有太大的不同
LanguageSupport:
Providescommontypedefinitionsusedthroughoutthelibrarysuchascharacteristicsofpredefinedtypes,functionssupportingstartandterminationofC++programs,supportfordynamicmemoryallocation,supportfordynamictypeidentification,andsupportforexceptionprocessingandotherruntimesupport
语言支持部分:
包含了一些标准类型的定义以及其他特性的定义,这些内容,被用于标准库的其他地方或是具体的应用程序中
Diagnostics:
Includescomponentsforreportingseveralkindsofexceptionalconditions,componentsfordocumentingprogramassertions,andaglobalvariableforerrornumbercodes
诊断部分:
提供了用于程序诊断和报错的功能,包含了异常处理(exceptionhandling),断言(assertions),错误代码(errornumbercodes)三种方式。
Generalutilities:
IncludescomponentsusedinotherelementsoftheStandardC++Library.ThesecomponentsmayalsobeusedbyanyC++programs.ThiscategoryalsoincludescomponentsusedbytheStandardTemplateLibrary(STL)andfunctionobjects,dynamicmemorymanagementutilities,anddate/timeutilities.ThiscategoryalsoincludesmemorymanagementcomponentsfromtheClibrary
通用工具部分:
这部分内容为C++标准库的其他部分提供支持,当然你也可以在自己的程序中调用相应功能。
比如:
动态内存管理工具,日期/时间处理工具。
记住,这里的内容也已经被泛化了(即采用了模板机制)
Strings:
Includescomponentsformanipulatingsequencesof"characters,"wherecharactersmaybeoftypechar,w_char,orofatypedefinedinaC++program.Thelibraryprovidesaclasstemplatebasic_string,whichdefinesthebasicpropertiesofstrings.Thestringandwstringtypesarepredefinedtemplateinstantiationsprovidedbythelibrary.
字符串部分:
用来代表和处理文本。
它提供了足够丰富的功能。
事实上,文本是一个string对象,它可以被看作是一个字符序列,字符类型可能是char,或者wchar_t等等。
string可以被转换成char*类型,这样便可以和以前所写的C/C++代码和平共处了。
因为那时侯除了char*,没有别的
Localization:
Includesinternationalizationsupportforcharacterclassificationandstringcollation;numeric,monetary,anddate/timeformattingandparsing;andmessageretrieval.
国际化(internationalization)部分:
翻译?
作为OOP特性之一的封装机制在这里扮演着消除文化和地域差异的角色,采用locale和facet可以为程序提供众多国际化支持,包括对各种字符集的支持,日期和时间的表示,数值和货币的处理等等。
毕竟,在中国和在美国,人们表示日期的习惯是不同的
TheStandardTemplateLibrary:
(STL):
ProvidesaC++programwithaccesstothemostwidelyusedalgorithmsanddatastructures.STLheaderscanbegroupedintothreemajororganizingconcepts:
containers,iterators,andalgorithms.Containersaretemplateclassesthatprovidepowerfulandflexiblewaystoorganizedata:
forexample,vectors,lists,setsandmaps.Iteratorsarethegluethatpastestogetheralgorithmsandcontainers.STLprovidesalargesetofprogrammablealgorithmstohandlesorting,searching,andothercommontasks
容器部分:
STL的一个重要组成部分,涵盖了许多数据结构,比如前面曾经提到的链表,还有:
vector(类似于大小可动态增加的数组)、queue(队列)、stack(堆栈)……。
string也可以看作是一个容器,适用于容器的方法同样也适用于string。
现在你可以轻松的完成数据结构课程的家庭作业了
算法部分:
STL的一个重要组成部分,包含了大约70个通用算法,用于操控各种容器,同时也可以操控内建数组。
比如:
find用于在容器中查找等于某个特定值的元素,for_each用于将某个函数应用到容器中的各个元素上,sort用于对容器中的元素排序。
所有这些操作都是在保证执行效率的前提下进行的,所以,如果在你使用了这些算法之后程序变得效率底下,首先一定不要怀疑这些算法本身,仔细检查一下程序的其他地方
迭代器部分:
STL的一个重要组成部分,如果没有迭代器的撮合,容器和算法便无法结合的如此完美。
事实上,每个容器都有自己的迭代器,只有容器自己才知道如何访问自己的元素。
它有点像指针,算法通过迭代器来定位和操控容器中的元素
Numerics:
Includescomponentsusedtoperformseminumericaloperationsandcomponentsforcomplexnumbertypes,numericarrays,generalizednumericalgorithms,andfacilitiesincludedfromtheISOClibrary
数值部分:
包含了一些数学运算功能,提供了复数运算的支持
Input/Output:
Includescomponentsforforwarddeclarationsofiostreams,predefinediostreamobjects,baseiostreamclasses,streambuffering,streamformattingandmanipulators,stringstreams,andfilestreams
输入/输出部分:
就是经过模板化了的原有标准库中的iostream部分,它提供了对C++程序输入输出的基本支持。
在功能上保持了与原有iostream的兼容,并且增加了异常处理的机制,并支持国际化(internationalization)
来源MSDN-2001
来源
来源
三STL标准模板库
STL(StandardTemplateLibrary,标准模板库)是惠普实验室开发的一系列软件的统称。
现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。
STL的代码从广义上讲分为三类:
algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
在C++标准中,STL被组织为下面的13个头文件:
、
STL中六大组件:
1)容器(Container),是一种数据结构,如list,vector,和deques(double-endedqueue),以模板类的方法提供。
为了访问容器中的数据,可以使用由容器类输出的迭代器;
2)迭代器(Iterator),提供了访问容器中对象的方法。
例如,可以使用一对迭代器指定list或vector中的一定范围的对象。
迭代器就如同一个指针。
事实上,C++的指针也是一种迭代器。
但是,迭代器也可以是那些定义了operator*()以及其他类似于指针的操作符地方法的类对象;
3)算法(Algorithm),是用来操作容器中的数据的模板函数。
例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象,函数本身与他们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用;
4)仿函数(Functionobject)
5)迭代适配器(Adaptor)
6)空间配制器(allocator)
STL容器:
该部分主要由头文件,
对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件的对应关系。
数据结构
描述
实现头文件
序列式容器(Sequencecontainers)
向量(vector)
连续存储的元素
列表(list)
由节点组成的双向链表,每个结点包含着一个元素
双队列(deque)
连续存储的指向不同元素的指针所组成的数组
队列(queue)
先进先出的执的排列
优先队列(priority_queue)
元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列
栈(stack)
后进先出的值的排列
关联式容器(Associatedcontainers)
集合(set)
由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序
多重集合(multiset)
允许存在两个次序相等的元素的集合
映射(map)
由{键,值}对组成的集合,以某种作用于键对上的谓词排列
多重映射(multimap)
允许键对有相等的次序的映射
迭代器:
该部分主要由头文件
STL算法
该部分主要由头文件
STL中算法大致分为四类:
非可变序列算法:
指不直接修改其所操作的容器内容的算法。
可变序列算法:
指可以修改它们所操作的容器内容的算法。
排序算法:
包括对序列进行排序和合并的算法、搜索算法以及有序序列上的集合操作。
数值算法:
对容器内容进行数值计算。
查找算法(13个):
判断容器中是否包含某个值;
adjacent_find:
在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的ForwardIterator;否则返回last;
binary_search:
在有序序列中查找value,找到返回true。
重载的版本实用指定的比较函数对象或函数指针来判断相等;
count:
利用等于操作符,把标志范围内的元素与输入值比较,返回相等元素个数;
count_if:
利用输入的操作符,对标志范围内的元素进行操作,返回结果为true的个数;
equal_range:
功能类似equal,返回一对iterator,第一个表示lower_bound,第二个表示upper_bound;
其他:
find,find_end,find_first_of,find_if,lower_bound,upper_bound,search,search_n;
排序和通用算法(14个):
提供元素排序策略;
inplace_merge:
合并两个有序序列,结果序列覆盖两端范围。
重载版本使用输入的操作进行排序;
merge:
合并两个有序序列,存放到另一个序列。
重载版本使用自定义的比较;
nth_element:
将范围内的序列重新排序,使所有小于第n个元素的元素都出现在它前面,而大于它的都出现在后面。
重载版本使用自定义的比较操作;
partial_sort:
对序列做部分排序,被排序元素个数正好可以被放到范围内。
重载版本使用自定义的比较操作;
partial_sort_copy:
与partial_sort类似,不过将经过排序的序列复制到另一个容器;
其他:
partition,random_shuffle,reverse,reverse_copy,rotate,rotate_copy,sort,stable_sort,stable_partition;
删除和替换算法(15个);
排列组合算法(2个):
提供计算给定集合按一定顺序的所有可能排列组合;
算术算法(4个);
生成和异变算法(6个);
关系算法(8个);
集合算法(4个);
堆算法(4个);
四来源
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+标准库和标准模板库 Standard C+ Library Overview Template 标准 模板
链接地址:https://www.bdocx.com/doc/28433949.html