C ++中的迭代器是什么?
答案 0 :(得分:16)
迭代器是遍历对象集合的一种方式。通常,它们允许您以类似于使用指针访问经典C数组的方式顺序访问STL(标准模板库)容器。要通过迭代器访问对象,可以像C指针一样取消引用它。要访问集合中的下一个对象,请使用increment(++)运算符。某些容器具有多种迭代器,允许您以不同方式遍历集合。
答案 1 :(得分:12)
虽然最初看起来相当明显,但这实际上是一个比你可能意识到的更深层次的问题。与Paul McJones一起,Alexander Stepanov(原版的设计师,对于任何不了解这一点的人)最近发布了一本名为编程元素(又名EOP)的书。该书第六章的全部内容专门用于迭代器,本书的其余部分也与迭代器密切相关。任何真正想要详细了解迭代器的人都可以考虑阅读本书。
警告:对于胆小的人来说,EOP 。它相对较短(约260页),但相当密集。从经验来看,早期的进展有点令人不安。我对第一章的初步反应或多或少“很好,这很明显,几乎不值得一读。毕竟我在上周之前开始编程!”
幸运的是,我确实看过这些练习,并试图做一对 - 尽管我认为这些主题很明显,但练习需要严格的证明。这有点像被要求证明(在数学意义上)水是湿的。你最后只需要阅读这一章只是为了超越你已经知道答案的先入为主的观念,所以你可以看看真正的问题 - “湿”真正意味着什么; “湿润”的基本特征是什么?
答案 2 :(得分:2)
http://en.wikipedia.org/wiki/Iterator
可让您逐个浏览数组中的所有内容。
在c ++中,我认为你在谈论“for_each”......据我所知,与C#这样的语言不同,C ++实际上没有“foreach”。但是,标准模板库有它。
答案 3 :(得分:2)
从p。 80 Accelerated C++:
迭代器是一个值
- 标识容器中的容器和元素
- 让我们检查存储在该元素中的值
- 提供在容器中的元素之间移动的操作
- 以与容器可以有效处理的方式相对应的方式限制可用操作
答案 4 :(得分:1)
它们是序列中位置的表示。它们本身就只是好奇心,但是当它们被取消引用时,它们会在序列中包含它所代表的位置。