网站大量收购独家精品文档,联系QQ:2885784924

第7章模板与标准模板库重点.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类中使用 class Scale { private: int _scale; public: Scale(int scale) :_scale(scale) { } void ApplyScale(const vectorint v) { for_each(v.begin(), v.end(), [this](int n) { cout n*_scale endl; } ); } }; 模板中使用 template typename T void print_all(const vectorT v) { for_each(v.begin(), v.end(), [ ] (const T n) { cout n endl; } ); } int main(){ vectorint v; v.push_back(34); //… print_all(v); } 7.2.7 断言(assert) 用于调试,使用方法 assert ( 表达式 ); 当表达式为假,系统停止程序在该处,于是可检查调用栈各函数的执行的状态。当表达式为真,系统继续执行后面的代码。 头文件 #include cassert 在其头文件前声明NDEBUG #define NDEBUG 可关闭,即不执行assert语句,节省CPU。最后交付不再调试程序时才这样做。 7.2 示例程序 模板Stack类 定义 实现 使用 使用assert 用于调试 Stack_Ex 模板参数还可以是实例类型 例: templateclass T,int size class Stack; …… Stack int,100 stack; 7.3 标准模板库 STL 7.3.1 容器、算法、迭代器 STL容器:对象的集合,通过由容器类提供的成员函数,可以实现诸如向序列中插入元素,删除元素,查找元素等操作,这些成员函数通过返回迭代子来指定元素在序列中的位置。 序列式:vector, stack, queue, deque, list 关联式:set, map 特点:容器的大小动态变化,容器中的对象类型是参数化的。 容器分为三大类: 标准库容器类 说明 顺序容器 vector(向量) deque(双端队列) list(列表) 从后面快速插入与删除,直接访问任何元素 从前面或后面快速插入与删除,直接访问任何元素 从任何地方快速插入与删除,双链表 关联容器 set(集合) multiset(多重集合) map(映射) multimap(多重映射) 快速查找,不允许重复值 快速查找,允许重复值 一对一映射,基于关键字快速查找,不允许重复值 一对多映射,基于关键字快速查找,允许重复值 容器适配器 stack(栈) queue(队列) priority_queue (优先级队列) 后进先出(LIFO) 先进先出(FIFO) 最高优先级元素总是第一个出列 算法:对容器进行处理的函数,是模板函数. 通用的算法更易于扩充。算法中采用函数对象(function object)引入不同情况下同一算法的差异。它没有使用继承和多态,避免了虚函数的开销,使STL效率更高。 copy, sort, search, merge 迭代子(iterator) 迭代子(iterator): 对容器中对象的遍历机制,表现如同指针,或是一种高级指针,是面向对象版本的指针,它提供了访问容器或序列中每个对象的方法。这样就可以把算法用于容器所管理的序列。 int A[100]; int *p=A; for( int i=0;i100;i++) { *p = i; p++ } vectorint A(100); vectorint:: iterator p=A.begin(); for( int i=0;i100;i++) { *p = i; p++; } 各种迭代子可执行的操作 包含正向迭代子所有功能,再增加 先++后执行,前置自减迭代子 先执行后++,后置自减迭代子 双向迭代子 --p p-- 提供输入和输出迭代子的所有功能 正向迭代子 间接引用迭代子,作为左值 将一个迭代子赋给另一个迭代子 输出迭代子 *p p=p1 间接引用迭代子,作为右值 将一个迭代子赋给另一个迭代子 比较迭代子的相等性 比较迭代子的不等性 输入迭代子 *p p=p1 p==p1 p!=p1 前置自增迭代子,先++后执行 后置自增迭代子,执行后再++ 所有迭代子 ++p p++ 说明 迭代操作 所有容器通用的方法 插入:inser

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档