容器就是数据结构的泛指java中的迭代器器就是指针的泛指,可以指向元素容器相当于一个储藏柜,里面装的许多不同的物品就像是储存的元素比如面包、啤酒、苹果、现金。要取得各个物体就得用与各个物体向匹配的工具如取出面包要用盘子、取出啤酒要用杯子、取出苹果要用篮子、取出现金要用錢包。java中的迭代器器的作用就相当于取出物品的工具的抽象通过java中的迭代器器泛指现实生活中从贮藏室中取出物体的工具。C++java中的迭代器器是一种检查容器内元素并遍历元素的数据类型1 C++中的iterator为STL中的重要概念。iterator的概念源自于对遍历一个线性容器工具的抽象即如何你能访问這个容器的某个元素。对于最简单的数组当然可以用数组的索引值,因为数组是连续存放在内存中的;但对于链表就必须用指针。除此之外还有还有很多种数据结构需要提供一个方便的工具来访问其中的元素,方法有ID关键字等等。为了统一所有的容器的这种工具的使用一般提供一整套容器的开发者就会用一种方式来表示各种容器的访问工具。例如C++ STL就是使用iteratorMFC自己的容器使用position。C#和java也有自己的方法但方法是不变的。 iterator的用法可以被统一但不同的底层容器实现其iterator的原理是不一样的。例如iterator++你可以理解为移动到容器的下一个元素如果底层如果是数组,把索引值加一就行;如果底层是链表就得执行类似于m_pCurrent = vector<int> 定义的 iterator 类型。每个标准库容器类型都定义了一个名为 iterator 的成员這里的 iterator 与java中的迭代器器实际类型的含义相同。begin 和 end 操作每种容器都定义了一对命名为 begin 和 end 的函数用于返回java中的迭代器器。如果容器中有元素嘚话由 begin 返回的java中的迭代器器指向第一个元素: iterator)。表明它指向了一个不存在的元素如果 vector 为空,begin 返回的java中的迭代器器与 end 返回的java中的迭代器器相同由 end 操作返回的java中的迭代器器并不指向 vector 中任何实际的元素,相反它只是起一个哨兵(sentinel)的作用,表示我们已处理完 vector java中的迭代器器的自增和解引用运算C++java中的迭代器器类型定义了一些操作来获取java中的迭代器器所指向的元素并允许程序员将java中的迭代器器从一个元素移動到另一个元素。java中的迭代器器类型可使用解引用操作符(dereference operator)(*)来访问java中的迭代器器所指向的元素:*iter = 0;解引用操作符返回java中的迭代器器当湔所指向的元素假设 iter 指向 vector 对象 ivec 的第一元素,那么 *iter 和ivec[0] 就是指向同一个元素上面这个语句的效果就是把这个元素的值赋为 0。java中的迭代器器使用自增操作符向前移动java中的迭代器器指向容器中下一个元素从逻辑上说,C++java中的迭代器器的自增操作和int 型对象的自增操作类似对 int 对象來说,操作结果就是把 int 型值“加 1”而对java中的迭代器器对象则是把容器中的java中的迭代器器“向前移动一个位置”。因此如果 iter 指向第一个え素,则 ++iter 指向第二个元素由于 end 操作返回的java中的迭代器器不指向任何元素,因此不能对它进行解引用或自增操作