【问题标题】:What are Iterators, C++?什么是迭代器,C++?
【发布时间】:2011-01-19 06:52:59
【问题描述】:

什么是 C++ 中的迭代器?

【问题讨论】:

标签: c++ iterator


【解决方案1】:

从 p. 80 个Accelerated C++:

迭代器是一个值

  • 标识容器和容器中的元素
  • 让我们检查存储在该元素中的值
  • 提供在容器中的元素之间移动的操作
  • 以与容器可以有效处理的方式相对应的方式限制可用操作

【讨论】:

    【解决方案2】:

    虽然最初看起来相当明显,但实际上这是一个比您可能意识到的更深层次的问题。与 Paul McJones 一起,Alexander Stepanov(原著的设计者,任何不知道的人)最近出版了一本名为 Elements of Programming(又名 EOP)的书。那本书的第六章全部专门讨论迭代器,本书其余部分也与迭代器密切相关。任何真正想详细了解迭代器的人都可以考虑阅读这本书。

    警告:EOP 适合胆小的人。它相对较短(约 260 页),但相当密集。从经验来看,早期的发展有点令人不安。我对第一章的最初反应或多或少是“好吧,这太明显了,几乎不值得一读。毕竟我是在上周之前开始编程的!”

    幸运的是,我确实看过练习,并尝试做一些练习——尽管我认为主题很明显,但练习需要严格的证明。这有点像被要求证明(在数学意义上)水是湿的。你最终只需要读几遍这一章,就可以摆脱你已经知道答案的先入为主的观念,这样你就可以看到真正的问题——“湿”的真正含义是什么? “湿”的基本特征是什么?

    【讨论】:

    • 很高兴来到 S.O 找到这样的答案。 +1
    • 感谢您指向一本我以前应该知道(如果没有读过)的书。
    【解决方案3】:

    迭代器是一种遍历对象集合的方式。通常,它们允许您以类似于使用指针访问经典 C 数组的方式顺序访问 STL(标准模板库)容器。要通过迭代器访问对象,您可以像 C 指针一样取消引用它。要访问集合中的下一个对象,请使用增量 (++) 运算符。一些容器有多种迭代器,允许您以不同的方式遍历集合。

    【讨论】:

      【解决方案4】:

      它们是序列中位置的表示。就其本身而言,它们只不过是好奇心,但当被取消引用时,它们会在它所代表的位置产生包含在序列中的值。

      【讨论】:

        【解决方案5】:

        http://en.wikipedia.org/wiki/Iterator

        可以让您逐个遍历数组中的所有内容。

        在 c++ 中,我认为您在谈论“for_each”......据我所知,C++ 实际上并没有“foreach”,这与 C# 等语言不同。但是,标准模板库有它。

        【讨论】:

        • 它当然不仅仅是数组,事实上 C++ 中迭代器的真正目标是抽象出集合本身及其属性,以便处理迭代器的算法可以用于任何类型的集合: )
        猜你喜欢
        • 2011-03-29
        • 2021-08-19
        • 1970-01-01
        • 2020-06-29
        • 2013-02-21
        • 2013-05-30
        • 2011-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多