当前位置: 首页 > 面试题库 >

请你来说一下STL中迭代器的作用,有指针为何还要迭代器?

奚翰海
2023-03-14
本文向大家介绍请你来说一下STL中迭代器的作用,有指针为何还要迭代器?相关面试题,主要包含被问及请你来说一下STL中迭代器的作用,有指针为何还要迭代器?时的应答技巧和注意事项,需要的朋友参考一下

1、迭代

Iterator(迭代器)模式又称Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。

由于Iterator模式的以上特性:与聚合对象耦合,在一定程度上限制了它的广泛运用,一般仅用于底层聚合支持类,如STL的list、vector、stack等容器类及ostream_iterator等扩展iterator。

2、迭代器和指针的区别

迭代器不是指针,是类模板,表现的像指针。他只是模拟了指针的一些功能,通过重载了指针的一些操作符,->、*、++、--等。迭代器封装了指针,是一个“可遍历STL( Standard Template Library)容器内全部或部分元素”的对象, 本质是封装了原生指针,是指针概念的一种提升(lift),提供了比指针更高级的行为,相当于一种智能指针,他可以根据不同类型的数据结构来实现不同的++,--等操作。

迭代器返回的是对象引用而不是对象的值,所以cout只能输出迭代器使用*取值后的值而不能直接输出其自身。

3、迭代器产生原因

Iterator类的访问方式就是把不同集合类的访问逻辑抽象出来,使得不用暴露集合内部的结构而达到循环遍历集合的效果。

 类似资料:
  • 本文向大家介绍请你来说一说STL迭代器删除元素?相关面试题,主要包含被问及请你来说一说STL迭代器删除元素?时的应答技巧和注意事项,需要的朋友参考一下 这个主要考察的是迭代器失效的问题。1.对于序列容器vector,deque来说,使用erase(itertor)后,后边的每个元素的迭代器都会失效,但是后边每个元素都会往前移动一个位置,但是erase会返回下一个有效的迭代器;2.对于关联容器map

  • 本文向大家介绍请简单说明一下什么是迭代器?相关面试题,主要包含被问及请简单说明一下什么是迭代器?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JAVA迭代器 Iterator提供了统一遍历操作集合元素的统一接口, Collection接口实现Iterable接口, 每个集合都通过实现Iterable接口中iterator()方法返回Iterator接口的实例, 然后对集合的元素进行迭代操作.

  • 我试图实现一个可以在c中迭代的LinkedList。 因此,我创建了一个迭代器类,这样取消对迭代器的引用将返回第一个元素。然而,这一直不起作用。然后,当我实例化一个新的int LinkedList并尝试通过取消引用begin()的结果来访问第一个元素时,我不会检索列表的第一个元素,而是检索一个10位数的数字,例如“1453755360” 我的节点类只是由两个右/左节点指针和一个数据变量组成 lin

  • 如果没有以下内容,我如何迭代/?

  • 本文向大家介绍请你来说一下智能指针shared_ptr的实现?相关面试题,主要包含被问及请你来说一下智能指针shared_ptr的实现?时的应答技巧和注意事项,需要的朋友参考一下 核心要理解引用计数,什么时候销毁底层指针,还有赋值,拷贝构造时候的引用计数的变化,析构的时候要判断底层指针的引用计数为0了才能真正释放底层指针的内存** template **class SmartPtr{private

  • 迭代器 乍看来,迭代器似乎很直观。但凑近了看,你会发现标准STL容器提供了四种不同的迭代器:iterator、const_iterator、reverse_iterator和const_reverse_iterator。很快你会注意到在这四种类型中,容器的insert和erase的某些形式只接受其中一种。那是问题的开始。为什么有四种迭代器?它们之间的关系是什么?它们可以互相转化吗?在调用算法和ST