一、C++迭代器
1.小例子
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec;
for(int i = 0; i < 10; i++)
vec.push_back(i);
for(auto it = vec.begin(); it != vec.end(); it++) {
cout << "i = " << *it << endl;
}
return 0;
}
使用C++的迭代器,就像使用指针一样。
for(auto it = vec.begin(); it != vec.end(); it++) {
cout << "i = " << *it << endl;
}
二、Java迭代器
1.同样的例子
package com.forrest.forEachRemaining;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test_FRR {
public static void main(String[] args) {
Collection<Integer> col = new ArrayList<>();
for(Integer i = 0; i < 10; i++)
col.add(i);
Iterator<Integer> iter = col.iterator();
//iter.forEachRemaining(ele -> System.out.println("i = " + ele));
while(iter.hasNext()) {
System.out.println("i = " + iter.next());
}
}
}
①Java迭代器
iter
,并不像C++迭代器it
一样指向集合的第1个元素。②正如《Java核心技术》中所说:应该将Java迭代器认为是位于两个元素之间。当调用next时,迭代器就越过下一个元素,并返回刚刚越过的那个元素的引用。
③显然,如果找不到下一个元素(无元素可越),next就会抛出异常,因此,先通过hasNext判断有无下一个元素。
while(iter.hasNext()) {
System.out.println("i = " + iter.next());
}
④使用
forEachRemaining
方法更简洁。