- 1、本文档共85页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
stl讲义讲解
stl讲义_0.1版 STL(Standard Template Library) 标准模板库 2011年noi明确允许使用 stl概述 STL是所有C++编译器和所有操作系统平台都支持的一种库,说它是一种库是因为,虽然STL是一种标准,也就是说对所有的编译器来说,提供给C++程序设计者的接口都是一样的。 也就是说同一段STL代码在不同编译器和操作系统平台上运行的结果都是相同的,但是底层实现可以是不同的。 令人兴奋的是,STL的使用者并不需要了解它的底层实现。 并且在c++的编译器里,stl所有的源代码都已经提供。 所以,我们没有理由拒绝c++和stl。 stl的思考 程序设计=算法+数据结构 stl库成功的将算法与数据结构分离,在没有效率损失的前提下,得到了及大的弹性。 STL的目的是标准化组件,这样你就不用重新开发它们了。你可以仅仅使用这些现成的组件。STL现在是C++的一部分,因此不用额外安装什么。它被内建在你的编译器之内,你只需要直接定义和调用即可。 使用STL 的应用程序保证了得到的实现在处理速度和内存利用方面都是高效的,因为STL设计者们已经为我们考虑好了。 使用STL编写的代码更容易修改和阅读,这是当然的啦。因为代码更短了,很多基础工作代码已经被组件化了; 使用简单,虽然内部实现很复杂。 我们使用过的stl #include algorithm 算法头文件就是stl的组件之一。 sort是algorithm的一个功能。 merge reverse stl库的理解 c++的stl库分为三部分: 容器(可以理解为数据结构) 迭代器(可以理解为对数据结构某个元素的引用。指针很像) 算法(各种常用固定算法,这个好理解) 容器 container 几种常用的数据结构 常用的STL容器 (1)Vector (2)deque (3)Stack (4)queue (5)list (6)set (7)map 11.1 标准模板库简介 从vector说起 vector是一个和数组(array)基本一样的类型,可以说是动态数组。 数组的所有操作,vector都支持。 不过它还有自己的一些独有的操作。 这个也是我们理解stl容器的最好工具。 vector的声明操作 #include iostream #include vector #include string #include algorithm using namespace std; int main () { string str[]={Alex,John,Robert}; vectorint v1; // v1是空的int类型的向量 vectorint v2(10); // v2含有10个int类型空元素的向量 vectorint v3(10,0); // v2含有10个int类型每个值都是0的向量 vectorstring v4(str+0,str+3); // v4是一个字符串向量,含有3个元素,分别是str的前三个值 vectorstring::iterator sIt = v4.begin(); // sIt 就是迭代器,指向v4第一个元素 while ( sIt != v4.end() ) cout *sIt++ “ ”; //sIt的++操作是变成下一个元素的地址,或者理解下标。 //*sIt就是sIt指向的元素的值 cout endl; vectorstring v5(v4); // 这个是把v4向量的值直接赋给v5.下面的操作是对比。 for ( int i=0; i3; i++ ) cout v5[i] ; cout endl; return 0; } vector的几种构造方法 string str[]={Alex,John,Robert}; vectorint v1; // v1是空的int类型的向量 vectorint v2(10); // v2含有10个int类型空元素的向量 vectorint v3(10,0); // v2含有10个int类型每个值都是0的向量 vectorstring v4(str+0,str+3); // v4是一个字符串向量,含有3个元素,分别是str的前三个值 vectorstring v5(v4); // 这个是把v4向量的值直接赋给v5. 迭代器sIt vectorstring::iterator sIt = v4.begin(); 下面是一个标准的迭代器sIt的声明: vectorstrin
您可能关注的文档
- 安徽省职业病危害防治规划解读.doc
- 安徽省潜山县黄铺中学2017届高三数学上学期第一次月考试题理解读.doc
- 安徽省皖智“1号卷”A10联盟2016届高三下学期开学联考理综化学试题Word版含解析]解读.doc
- 安徽省潜山县黄铺中学2017届高三上学期第一次月考数学(理)试题解读.doc
- 安徽省蚌埠市五河县高级中学2014-2015学年高二语文上学期期中试题解读.doc
- 安徽省蚌埠市五河县高级中学2015届高三语文上学期期中试题解读.doc
- 安徽省装饰装修工程消耗量定额解读.doc
- 安徽省金寨县强夯方案(报审)解读.doc
- 安徽省蚌埠市2016届高三第三次教学质量检查数学文试题Word版含答案解读.doc
- 安徽省高校人文科学研究项目申报书解读.doc
- 2025年中山市沙溪镇人民政府所属事业单位招聘11人笔试备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库含答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库参考答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及答案详解一套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及完整答案详解1套.docx
文档评论(0)