ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:3.34MB ,
资源ID:17941853      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17941853.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c++STL总结Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c++STL总结Word文件下载.docx

1、mean(a, 5);std:endl; return 0;/使用了STL的代码 vectorint main() vector a; a.push_back(1); a.push_back(2); a.push_back(3); a.push_back(4); a.push_back(5); for(int i = 0; i a.size(); +i) std:ai 1.2 模板(template) 针对一个或多个尚未明确的类型所撰写的函数或类。1.2.1函数模板 #includeusing namespace std;/定义函数模板 templateT MAX(T a, T b) retu

2、rn (ab)?a:b;int main() int x=2,y=6; double x1=9.123,y1=12.6543; coutmax(x,y)max(x1,y1)1.2.2类模板/类模板/定义名为ex_class的类模板template class ex_class T value;public: ex_class(T v) value = v; void set_value(T,v) T get_value(void) return value; /测试char类型数据 ex_class ch(A);ch.value:ch.get_value() ch.set_value(aeng

3、l; /测试double类型的数据 d(5.5);d.value:d.get_value() x.set_value(7.4);x.value:x.get_value()1.3 STL组件(1)容器(Container) - 管理某类对象的集合 (2)迭代器(Iterator) - 在对象集合上进行遍历 (3)算法(Algorithm) - 处理集合内的元素 (4)容器适配器(container adaptor) (5)函数对象(functor) 1.4 STL容器类别 (1)序列式容器-排列次序取决于插入时机和位置 。(2)关联式容器-排列顺序取决于特定准则。1.5 STL容器的共通能力(1

4、)所有容器中存放的都是值而非引用,即容器进行安插操作时内部实施的是拷贝操作。因此容器的每个元素必须能够被拷贝。如果希望存放的不是副本,容器元素只能是指针。(2)所有元素都形成一个次序(order),可以按相同的次序一次或多次遍历每个元素。(3)各项操作并非绝对安全,调用者必须确保传给操作函数的参数符合需求,否则会导致未定义的行为。1.6 STL容器元素的条件(1)必须能够通过拷贝构造函数进行复制。(2)必须可以通过赋值运算符完成赋值操作。(3)必须可以通过析构函数完称销毁动作。(4)序列式容器元素的默认构造函数必须可用。(5)某些动作必须定义operator =,例如搜寻操作。(6)关联式容器

5、必须定义出排序准则,默认情况是重载。operator 对于基本数据类型(int,long,char,double,)而言,以上条件总是满足1.7 STL容器的共通操作 (1)初始化(initialization) 产生一个空容器list l;以另一个容器元素为初值完成初始化。 float c(l.begin(),l.end();以数组元素为初值完成初始化。 int array=2,4,6,1345;setc(array,array+sizeof(array)/sizeof(array0);(2)与大小相关的操作(size operator) size()-返回当前容器的元素数量。empty()

6、-判断容器是否为空。max_size()-返回容器能容纳的最大元素数量。(3)比较(comparison) =,!=,= 1)比较操作两端的容器必须属于同一类型。2)如果两个容器内的所有元素按序相等,那么这两个容器相等。3)采用字典式顺序判断某个容器是否小于另一个容器。(4)赋值(assignment)和交换(swap) swap用于提高赋值操作效率。(5)与迭代器(iterator)相关的操作 begin()-返回一个迭代器,指向第一个元素。end()-返回一个迭代器,指向最后一个元素之后。rbegin()-返回一个逆向迭代器,指向逆向遍历的第一个元素。rend()-返回一个逆向迭代器,指向

7、逆向遍历的最后一个元素之后。(6)元素操作 insert(pos,e)-将元素e的拷贝安插于迭代器pos所指的位置。erase(beg,end)-移除beg,end区间内的所有元素。clear()-移除所有元素。1.8 迭代器(iterator) 1.8.1 迭代器的特点(示例:iterator) (1)可遍历STL容器内全部或部分元素的对象。(2)指出容器中的一个特定位置。(3)迭代器的基本操作:(4)所有容器都提供获得迭代器的函数半开区间beg, end)的好处:1.为遍历元素时循环的结束时机提供了简单的判断依据(只要未到达end(),循环就可以继续)。2.不必对空区间采取特殊处理(空区间

8、的begin()就等于end()(5)所有容器都提供两种迭代器 container:iterator 以“读/写”模式遍历元素 。const_iterator 以“只读”模式遍历元素。(6)迭代器示例:iterator 1.8.2 迭代器分类 (1)双向迭代器l;for(pos=l.begin();pos!=l.end();+pos 1)可以双向行进,以递增运算前进或以递减运算后退、可以用=和!=比较。2)list、set和map提供双向迭代器。(2)随机存取迭代器1)除了具备双向迭代器的所有属性,还具备随机访问能力。2)可以对迭代器增加或减少一个偏移量、处理迭代器之间的距离或者使用之类的关系

9、运算符比较两个迭代器。3)vector、deque和string提供随机存取迭代器vector v;for(pos=v.begin();posv.end();+pos 2. STL容器2.1 vector容器2.1.1 vector容器的特点(1)vector模拟动态数组。(2)vector的元素可以是任意类型T,但必须具备赋值和拷贝能力(具有public拷贝构造函数和重载的赋值操作符)。(3)必须包含的头文件#includev;v.assign(l.begin(),l.end();2.1.5 vector 元素存取 /empty v5= t; /runtime error cout (4)l

10、ist不支持随机存取,因此不提供下标操作符。(5)在任何位置上执行元素的安插和移除都非常快。(6)安插和删除不会导致指向其他元素的指针、引用、iterator 失效。2.2.2 list 构造、拷贝和析构 2.2.3 非变动性操作2.2.4 list 赋值2.2.5 list 元素存取 l.front();if(!l.empty() l.back(); /ok2.2.6 list 迭代器相关函数2.2.7 list 安插(insert)元素2.2.8 list 移除(remove)元素2.2.9 list 特殊变动性操作2.2.10 list应用实例2.3 map容器2.3.1 map/mul

11、timap特点(1)使用平衡二叉树管理元素。(2)元素包含两部分(key,value),key和value可以是任意类型。(3)必须包含的头文件#include (4)根据元素的key自动对元素排序,因此根据元素的key进行定位很快,但根据元素的value定位很慢。(5)不能直接改变元素的key,可以通过operator 直接存取元素值。(6)map中不允许key相同的元素,multimap允key相同的元素。(7)map/multimap 内部存储结构图:2.3.2 map/multimap 构造、拷贝和析构其中map可以是下列形式 :map 一个以less( 一个以op为排序准则的map。

12、2.3.3 map/multimap 非变动性操作2.3.4 map/multimap 赋值2.3.5 map/multimap 特殊搜寻操作2.3.6 map/multimap 迭代器相关函数2.3.7 map/multimap 安插(insert)元素2.3.8 map/multimap 移除(remove)元素2.3.9 map/multimap map应用实例map3. STL算法(1)STL提供了一些标准算法来处理容器内的元素。搜寻、排序、拷贝、数值运算。(2)STL的算法是全局函数 a.明确划分数据和操作。b.泛型函数式编程模式。c.所有算法可以对所有容器适用,甚至可以操作不同类型

13、容器的元素 (3)算法头文件 #include(4)STL算法实例:algorithm3.1 区间(range) (1)所有算法都用来处理一个或多个区间内的元素。(2)区间可以但不一定涵盖容器内所有元素。(3)为了操作元素的某个子集必须将区间的首尾(iterator)当作两个参数传递给算法。(4)调用时必须确保区间有效性。a.从起点出发,逐一前进,能够到达终点。b.区间首尾两个迭代器必须属于同一容器,且前后放置正确。c.无效区间可能会引起无限循环或者内存非法访问(5)所有算法处理的都是半开区间begin, end)。3.2 STL算法分类 (1)非变动性算法(nonmodifying algo

14、rithms) (2)变动性算法(modifying algorithms) (3)移除性算法(removing algorithms) (4)变序性算法(mutating algorithms) (5)排序性算法(sorting algorithms) (6)已序区间算法(sorted range algorithms) (7)数值算法(numeric algorithms)3.3 for_each()算法 for_each(InputIterator beg, InputIterator end, UnaryProc op) 对区间beg, end)中的每一个元素调用。op(elem) 返回op之后的容器副本。op可以改变元素。op的返回值被忽略。复杂度:O(n) 示例:foreach3.4 非变动性算法 既不改变元素次序也不改变元素值 3.4.1元素计数 (1)count(InputIterator beg,InputIterator end, const T& value) 计算区间中值等于value的元素个数。(2)count(InputIterator beg,InputIterator end, Predicate op) 计算区间中使判断式op结果为true的元素个。op接受单个参数,返回值为bool型。3.4.2排序算法需要动用随机存取迭代器。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1