![]() |
1
24
迭代器允许您从容器中分离算法。只要您有一个开始和结束迭代器,并且知道迭代器的功能(随机访问等),您就可以在迭代器指定的范围内执行操作。例如,请参见
|
![]() |
2
4
迭代器允许您使用类似指针的语义遍历容器成员,否则这对于具有非连续存储的容器是不切实际的。 |
![]() |
3
4
迭代器提供抽象。对于只想对某个容器的内容进行操作的方法,如何遍历该容器并不重要。当然,迭代器需要更加通用。您希望使用最快的操作,但仍然希望编写泛型代码,或者希望使用支持输出的迭代器。这就是类型特征的来源。这(与概念相结合)广泛用于
另一方面:迭代器并不是所有问题的最佳解决方案,因此常常被推广到范围(看到了吗 boost range 例如 this |
![]() |
4
3
例子:
这允许您迭代I/O流,例如,编写如下代码:
|
![]() |
5
2
迭代器本质上是C中指针的改进版本。顺便说一句,这两者可以混合使用,因为迭代器的行为类似于指针。
|
![]() |
6
1
迭代器使您的生活更轻松,因为您不需要担心在容器上进行迭代所使用的容器的底层结构。这允许您花更多的时间在相关的算法上,而不是在具体的实现上(这可能很复杂)。 |
![]() |
7
1
它看起来更成熟的写作
|
![]() |
8
1
STL中使用迭代器的主要原因是允许算法的编写独立于数据的存储方式。当然,存储确实(或至少可以)施加一些限制,这会导致各种类型的迭代器(例如,随机访问与输入),但这些迭代器(旨在)尽可能独立于底层数据结构。
例如,这允许
|
![]() |
9
0
这看起来像一个家庭作业问题,但是。。。 STL是C++。迭代器使得遍历事物列表变得很容易(通常提供一些STL魔法juju来处理事物的类型)。 |
![]() |
10
0
什么优势? 您是否希望将迭代器与其他方法进行比较?
C样式的整数序列,例如
类似地,指针增量
提出了更高层次的替代方案,并实施了许多方案。范围,Perl风格的“foreach”语法,Lisp风格的“apply”。 |
|
Julia · 矢量中相加为总和S的值的数量 2 年前 |
![]() |
apetrai · 我应该如何假设算法使用哪种迭代器类别? 3 年前 |
![]() |
Pratik · 不使用Java DeepCopy迭代器 7 年前 |
![]() |
PanDe · 将两个列表合并为一个Dict、Tuple 7 年前 |
![]() |
bisarch · 迭代哈希集并在每次迭代中删除多个元素 7 年前 |