关于iterator迭代器的问题

书上说,list的迭代器只能进行“++”或“——”操作,不能进行+n或-n的操作,因为元素的位置并不是物理相连的。。

好吧,那就弄个for循环来实现+n的效果。

下面是我的代码:

 1 #include<iostream>
 2 #include<list>
 3 using namespace std;
 4  5 int main()
 6 {
 7     int m,n;
 8     cin>>m>>n;
 9     list<int> l;
10     for(int i=1; i<=m; i++)
11     {
12         l.push_back(i);
13     }
14     list<int>::iterator it=l.begin();
15     for(int i=1; i<=n; i++,it++)cout<<*it<<endl;;
16     cout<<*it<<endl;
17     18 19     return 0;
20 }

输入

20 5

输出

1

2

3

4

5

6

真是奇了怪了!!!!

时间: 2024-10-05 23:57:44

关于iterator迭代器的问题的相关文章

Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)

1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1)Iterator定义有三个方法: ①boolean hasNext()方法:判断指针后面是否有元素. ②E next()方法:指针后移,并返回当前元素.E代表泛型,默认为Object类型. ③void remove()方法:在原集合中删除刚刚返回的元素. 2)对于List集合而言,可以通过基于下标的

vector容器+iterator迭代器

关于vector容器的详细描述,可参考:http://www.jb51.net/article/41648.htm 关于iterator迭代器的描述,可参考http://www.cppblog.com/totti1006/archive/2009/09/01/94955.html 的后半部分中“容器的iterator类型”这一部分. 他山之石可以攻玉. The end.

C++ Iterator迭代器介绍及Iterator迭代器用法代码举例

C++ Iterator迭代器介绍 迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针.举一个例子,你可用一个迭代器来实现对vector容器中所含元素的遍历.有这么几种迭代器如下: 迭代器 描述 input_iterator 提供读功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*). output_iterator 提供写功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*). forward_iterator 可向前移动的,同时具有读写功能的迭代器.同

Iterator - 迭代器模式

定义 提供一个方法顺序访问一个聚合对象中个各个元素,而又不需要暴露该对象的内部结构. 案例 一个聚合对象,如一个列表List,应该提供一种方法来让别人可以访问它的元素,而又不用暴露内部结构.迭代器模式可以很好的解决这类问题,关键思想就是将队列表的访问和遍历从列表对象中分离出来,放到一个迭代器Iterator对象中,Iterator定义了一个访问List对象的接口. AbstractList提供了List的基本接口: template<class Item> class AbstractList

iterator迭代器的使用

部分摘自C++ Primer: 所有的标准库容器类都定义了相应的iterator类型,如vector:vector<int>::iterator iter; 这条语句定义了一个名为iter的变量,它的数据类型是由vector<int>定义的iterator类型. 理解一下:除了使用下标来访问vector对象的元素外,标准库还提供了另一种检测元素的方法:使用迭代器(iterator).迭代器是一种允许程序员检查容器内元素,并实现元素遍历的数据类型. vector <int>

Iterator迭代器使用造成java.util.NoSuchElementException异常

使用Iterator迭代器出现错误java.util.NoSuchElementException 错误写法: Iterator<Map<String, Object>> it = list.iterator(); while(it.hasNext()){ if(it.next().get("listSrc") != null && "C".equals(it.next().get("listSrc").t

java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制)

转载请注明出处(请尊重原创!谢谢~): http://blog.csdn.net/javazejian/article/details/53073995 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) ??这篇是数据结构与算法的第3篇,通过前两篇的介绍,对应顺序表和链表已有

【转】Java学习之Iterator(迭代器)的一般用法 (转)

[转]Java学习之Iterator(迭代器)的一般用法 (转) 迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素.注意:iterator()方法是java.l

设计模式17:Iterator 迭代器模式(行为型模式)

Iterator 迭代器模式(行为型模式) 动机(Motivation) 在软件构建过程中,集合对象内部结构常常变化各异.但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码可以透明地访问其包含的元素:同时这种“透明变量”也为“同一种算法在多种集合对象上进行操作”提供了可能. 使用面向对象技术使这种遍历机制抽象为“迭代器对象”为“应对变化中的集合对象”提供了一种优雅的方式. 意图(Intent)提供一种方法顺序访问一个聚合对象中各个元素 , 而又不需暴露该对象的内部表示.——

设计模式(十五):Iterator迭代器模式 -- 行为型模式

1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用户界面框架中的 Window 对象可以收集任意数量的控制对象 - Menu.Slider 和 Button.并且,集合的实现可以有多种方式:PHP 数字是一个集合,但也是一个散列表,一个链接列表,一个堆栈以及队列. 例子1:电视遥控器的频道遍历 2.问题 如何操纵任意的对象集合? 如一个列表(Lis