问题标签 [iterator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
45907 浏览

python - 是否有任何内置方法可以在 python 中获取可迭代的长度?

例如,Python 中的文件是可迭代的——它们迭代文件中的行。我想计算行数。

一种快速的方法是这样做:

但是,这会将整个文件加载到内存中(一次)。这反而违背了迭代器的目的(只需要将当前行保留在内存中)。

这不起作用:

因为发电机没有长度。

除了定义计数函数之外,还有什么方法可以做到这一点?

为了澄清,我知道必须阅读整个文件!我只是不想一下子在记忆中

0 投票
3 回答
1593 浏览

.net - 如何使用生成器遍历树结构?

我试图弄清楚如何在树节点中实现一个函数,该函数返回其所有后代叶子(无论是直接的还是间接的)。但是,我不想传递将递归放置叶节点的容器(树可能很大),而是我想使用生成器来遍历树。我尝试了几种方法,但到目前为止没有一种方法有效。这是我最接近可能的解决方案的一个:

但这也不起作用。我究竟做错了什么?如果同一个函数中有一个 yield 语句,似乎递归调用 .EnumerateLeaves 将不起作用。

任何帮助将不胜感激。提前致谢。

编辑:我忘了提到一个分支可以有叶子或分支作为孩子,因此递归。

0 投票
4 回答
16098 浏览

c++ - 如何从 stl 数据结构中删除 reverse_iterator?

由于某种原因,以下代码失败。您不能简单地使用它的 base() 方法擦除 reverse_iterator。

如何正确地执行上述操作?给定一个与您要擦除的内容相对应的 reverse_iterator,您如何擦除它?

请注意,不幸的是,擦除不会采用 reverse_iterators。它想要真实的东西。

0 投票
6 回答
34182 浏览

delphi - 有什么方法可以获取容器控件上的所有控件?

我有一个带有一堆控件的表单,我想遍历某个面板上的所有控件并启用/禁用它们。

我试过这个:

但这无济于事。原来所有组件都在表单的组件集合中,而不是它们的父对象。那么有谁知道是否有任何方法可以将所有控件放入控件中?(除了像这样丑陋的解决方法,这是我最终不得不做的):

有人请告诉我有更好的方法...

0 投票
2 回答
498 浏览

c# - 返回 IEnumerable 的迭代器方法之间有什么区别吗和 IEnumerator?

考虑两个具有相同主体的迭代器方法:

是否有任何情况下 callIt2与 call 不同It1.GetEnumerator()

是否有充分的理由将迭代器定义为IEnumerator<T>over IEnumerable<T>?我唯一能想到的就是当你在实施IEnumerable<T>.GetEnumerator().

编辑:迭代器方法是指使用yield returnyield break构造的方法。

0 投票
2 回答
1621 浏览

c++ - 如何从模板类中的变量返回向量迭代器?

我正在尝试为模板类中的向量返回一个迭代器(我不确定这是否会有所不同,但我已经读过它,所以我想我会提到它)。问题是当我尝试这个时,我得到一个关于 C++ 不支持 default-int 的错误。我在网上看过,从我在论坛和解释中看到的,我不认为我离得那么远,它只是无法编译。

我得到的错误是:

编辑:
更改了末端尖括号,使它们不那么靠近 - 同样的错误。

关于为什么会发生这种情况的任何想法?
与往常一样,提前感谢您的建议/帮助!

0 投票
4 回答
26163 浏览

c# - Writing custom IEnumerator with iterators

How can I write a custom IEnumerator<T> implementation which needs to maintain some state and still get to use iterator blocks to simplify it? The best I can come up with is something like this:

0 投票
5 回答
6312 浏览

c++ - 有什么方法可以检查迭代器是否有效?

例如,对于操作容器映射的两个线程,测试迭代器是否仍然有效(出于性能原因)的正确方法是什么?
或者只能通过间接的方式来做到这一点。示例代码:

0 投票
7 回答
4549 浏览

c# - 在 C# 中实现双向枚举器

有没有办法使用 yield 块来实现一个IEnumerator<T>可以向后(MoveLast())以及向前的方法?

0 投票
3 回答
1308 浏览

perl - 如何在 Perl 中迭代/取消引用一组子例程 refs?

我试图弄清楚如何迭代一组子程序参考。

这种语法有什么问题?

提前致谢!