北京大学程序设计实的习课程.ppt

  1. 1、本文档共70页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京大学程序设计实的习课程

程序设计实习 第二十二讲 标准模板库 STL-III 主讲教师:田永鸿 yhtian@ /cpp2008/tyh/tyh.htm /jiaoxue-CPP/cpp08.htm 2008年5月28日 内容回顾 新概念 函数对象 pair 模板 STL中的其它容器类模板 multiset/set multimap/map stack/queue/priority_queue 复习copy函数模板 课堂问题(1) 下面各描述说明了STL中迭代器与C++指针的关系,不正确的有哪些? (1)迭代器包含内存地址的获得,是面向对象版本的指针。迭代器可以包括指针,但迭代器又不仅是一个指针。 (2)迭代器保存所操作的特定容器需要的状态信息,从而实现与每种容器类型相适应的迭代器。 (3)从本质上说,STL提供的所有算法都是模板,我们可以通过使用自己指定的迭代器来对这些模板实例化。 (4)++运算符总是返回容器下一个元素的迭代器,--运算符总是返回容器上一个元素的迭代器。 下面有关函数对象的说法中,正确的有哪些? (1)函数对象是一个类,它重载了函数调用操作符(operator())。典型情况下,函数对象被作为实参传递给泛型算法。 (2) 函数指针是间接引用,不能作为内联函数,而函数对象可以,这样速度更快。 (3)编译时对函数对象和函数指针均作类型检查 。 (4) 类有数据域,函数对象可以拥有任意数量的额外数据,用这些数据可以用来缓冲当前数据和结果,提高运行质量。 课堂问题(2) 指出下述程序中的错误之处 #include set using namespace std; class A { int n; public: A(int n_ ) { n = n_; } bool operator==( const int m ) { return n ==m; } }; int main() { multisetA a; a.insert( A(5)); return 0; } 以下关于 STL 中 stack 类模板的正确说法是: A. stack 是关联容器 B. 对于stack 上的迭代器p,能够执行 p++ 操作 C. stack 可以用deque实现 D. 可以用 sort 算法对stack 进行排序 课堂问题(3) 以下程序编译、连接都能通过,请写出运行时输出的结果。你认为没有输出的,就写无输出 #include vector #include iostream using namespace std; class A { private : int nId; public: A(int n) { nId = n; cout nId contructor endl; }; ~A( ) { cout nId destructor endl; } }; int main() { vectorA* vp; vp.push_back(new A(1)); vp.push_back(new A(2)); vp.clear(); A a(4); return 0; } 内容提要 – 算法 fill、remove、replace 系列算法 数学算法 排序和查找算法 交换、合并等算法 集合操作算法 位操作算法 作业 fill、remove、replace 系列算法 fill与fill_n templateclass FwdIt, class T void fill(FwdIt first, FwdIt last, const T x); templateclass OutIt, class Size, class T void fill_n(OutIt first, Size n, const T x); fill ,fill_n: 将容器中某一区间的元素全部设为某值,比如: vector int v(100); fill( v.begin(), v.end(), 5 ); //将全部元素设为5 vectorchar vc(100); fill_n(vc.begin(),5, ‘A’); //将 begin()及其后5个元 //素设为 ‘A’ fill、remove、replace 系列算法 generate 和 generate_n 依次将容器中某一区间的值,设为 g() templateclass FwdIt, class Gen void generate(FwdIt first, FwdIt last, Gen g); templateclass OutIt,

文档评论(0)

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

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

1亿VIP精品文档

相关文档