迭代器封装了位置概念。
for (auto &i : lst) {
cout << i;
}
迭代器可以封装为模板类的内部类,并将模板类声明为友元。
对于自定义类型,如果想让编译器支持范围for的语法,需要提供begin(),end(),operator++,operator!=,operator*函数,编译器会自动调用。
遍历过程中删除迭代器时,此迭代器失效,此失效的迭代器原先保存了下一个迭代的位置,现在已经不能获取到了,所以会出错。