1、总的说:

1)范围——指针属于迭代器的一种(指针可以用来遍历容器[数组])
2)功能——迭代器有着比指针更细的划分并对应能力不同的功能(重载不同的运算符)
3)行为——迭代器比指针更统一和良好的用法(更轻易使用begin()和end(),不用担心越界)。

2、迭代器:
1)迭代器不是指针,是类模板,表现的像指针。模拟了指针的一些功能,通过重载了指针的一些操作符,->,++ --等封装了指针,是一个“可遍历STL( Standard Template Library)容器内全部或部分元素”的对象, 本质是封装了原生指针,是指针概念的一种提升(lift),提供了比指针更高级的行为,相当于一种智能指针,他可以根据不同类型的数据结构来实现不同的++,–等操作;
2)迭代器返回的是对象引用,而不是对象的值,cout只能输出迭代器使用 * 取值后的值,不能直接输出自身;
3)能一次访问容器中的各个元素,通过迭代器,容器和算法可以结合起来,对算法给与不用的迭代器,就可以对不同容器进行相同的操作。

3、指针:
指针能指向函数,迭代器不行,只能指向容器,指针只能指向某些特定容器。

4、迭代器使用后就释放了,不能再继续使用,指针能。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐