泛型程序设计与C++标准模板库要点.ppt
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * template void popElements T s //定义模板函数 while !s.empty cout s.front ; //用函数front读取Queue顶上的元素并输出 s.pop ; //用函数pop删除顶上的元素 * 什么是迭代器 迭代器是面向对象版本的指针 指针可以指向内存中的一个地址 迭代器可以指向容器中的一个位置 STL的每一个容器类模版中,都定义了一组对应的迭代器类。使用迭代器,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。 * 迭代器 迭代器的类型 输入迭代器 可以用来从序列中读取数据 输出迭代器 允许向序列中写入数据 前向迭代器 既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历 双向迭代器 与前向迭代器相似,但是在两个方向上都可以对数据遍历 随机访问迭代器 也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转。 * 迭代器 迭代器适配器 迭代器适配器是用来扩展(或调整)迭代器功能的类。它本身也被称为迭代器,只是这种迭代器是通过改变另一个迭代器而得到的 逆向迭代器 通过重新定义递增运算和递减运算,使其行为正好倒置 插入型迭代器 将赋值操作转换为插入操作。通过这种迭代器,算法可以执行插入行为而不是覆盖行为 例6 应用逆向迭代器和后插迭代器来操作向量容器中的元素 * 迭代器 #include #include #include using namespace std; int main int A[] 1, 2, 3, 4, 5 ; const int N sizeof A / sizeof int ; vector col1 A,A+N ; ostream_iterator output cout, ; cout List col1 contains: ; copy col1.begin , col1.end , output ; //输出初始向量容器col1中的元素 * vector ::iterator pos col1.begin ; //定义指向初始元素的迭代器 cout \nThe fist element is: *pos; //输出第一个元素 vector ::reverse_iterator rpos col1.rbegin ; //应用逆向迭代器指向最后一个元素 cout \nThe last element is: *rpos endl; //输出最后一个元素 back_insert_iterator vector iter col1 ; //声明后插迭代器 *iter 66; //应用后插迭代器插入元素66 back_inserter col1 88; //应用函数后插元素88 copy col1.begin , col1.end , output ; //输出后插操作后的向量容器col1中的元素 cout endl; * 迭代器相关的辅助函数 advance 函数 将迭代器的位置增加,增加的幅度由参数决定 distance 函数 返回迭代器之间的距离 函数iter_swap 交换两个迭代器所指向的元素值 例7 用三个迭代器辅助函数来操作列表容器中的元素。 * 迭代器 #include #include #include using namespace std; int main int A[] 1, 2, 3, 4, 5 ; const int N sizeof A / sizeof int ; list col1 A,A+N ; ostream_iterator output cout, ; cout List col1 contains: ; copy col1.begin , col1.end , output ; //输出初始列表容器col1中的元素 * list ::iterator pos col1.begin ; //定义指向初始元素的迭代器 cout \nThe fist element is: *pos; //输出第一个元素 advance pos,3 ; //前进三个元素,指向第四个元素 cout \nThe 4th element is: *pos; //输出第四个元素 cout \nThe advan
显示全部