- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5、泛型程序设计与C标准模板库讲解
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * template class T void popElements( T s ) //定义模板函数 { while ( !s.empty() ) { cout s.front() ; //用函数front读取Queue顶上的元素并输出 s.pop(); //用函数pop删除顶上的元素 } } * 什么是迭代器 迭代器是面向对象版本的指针 指针可以指向内存中的一个地址 迭代器可以指向容器中的一个位置 STL的每一个容器类模版中,都定义了一组对应的迭代器类。使用迭代器,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。 * 迭代器 迭代器的类型 输入迭代器 可以用来从序列中读取数据 输出迭代器 允许向序列中写入数据 前向迭代器 既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历 双向迭代器 与前向迭代器相似,但是在两个方向上都可以对数据遍历 随机访问迭代器 也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转。 * 迭代器 迭代器适配器 迭代器适配器是用来扩展(或调整)迭代器功能的类。它本身也被称为迭代器,只是这种迭代器是通过改变另一个迭代器而得到的 逆向迭代器 通过重新定义递增运算和递减运算,使其行为正好倒置 插入型迭代器 将赋值操作转换为插入操作。通过这种迭代器,算法可以执行插入行为而不是覆盖行为 例6 应用逆向迭代器和后插迭代器来操作向量容器中的元素 * 迭代器 #include iostream #include vector #include algorithm using namespace std; int main() { int A[] = {1, 2, 3, 4, 5}; const int N = sizeof(A) / sizeof(int); vectorint col1(A,A+N); ostream_iterator int output( cout, ); cout List col1 contains: ; copy( col1.begin(), col1.end(), output ); //输出初始向量容器col1中的元素 * vectorint::iterator pos=col1.begin(); //定义指向初始元素的迭代器 cout\nThe fist element is: *pos; //输出第一个元素 vectorint::reverse_iterator rpos=col1.rbegin(); //应用逆向迭代器指向最后一个元素 cout\nThe last element is: *rposendl; //输出最后一个元素 back_insert_iteratorvectorint iter(col1); //声明后插迭代器 *iter=66; //应用后插迭代器插入元素66 back_inserter(col1)=88; //应用函数后插元素88 copy( col1.begin(), col1.end(), output ); //输出后插操作后的向量容器col1中的元素 coutendl; } * 迭代器相关的辅助函数 advance()函数 将迭代器的位置增加,增加的幅度由参数决定 distance()函数 返回迭代器之间的距离 函数iter_swap() 交换两个迭代器所指向的元素值 例7 用三个迭代器辅助函数来操作列表容器中的元素。 * 迭代器 #include iostream #include list #include algorithm using namespace std; int main() { int A[] = {1, 2, 3, 4, 5}; const int N = sizeof(A) / sizeof(int); listint col1(A,A+N); ostream_iterator int output( cout, ); cout List col1 contains: ; copy( col1.begin(), col1.end(), output ); //输出初始列表容器c
文档评论(0)