问题标签 [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.
python - 是否有任何内置方法可以在 python 中获取可迭代的长度?
例如,Python 中的文件是可迭代的——它们迭代文件中的行。我想计算行数。
一种快速的方法是这样做:
但是,这会将整个文件加载到内存中(一次)。这反而违背了迭代器的目的(只需要将当前行保留在内存中)。
这不起作用:
因为发电机没有长度。
除了定义计数函数之外,还有什么方法可以做到这一点?
为了澄清,我知道必须阅读整个文件!我只是不想一下子在记忆中
.net - 如何使用生成器遍历树结构?
我试图弄清楚如何在树节点中实现一个函数,该函数返回其所有后代叶子(无论是直接的还是间接的)。但是,我不想传递将递归放置叶节点的容器(树可能很大),而是我想使用生成器来遍历树。我尝试了几种方法,但到目前为止没有一种方法有效。这是我最接近可能的解决方案的一个:
但这也不起作用。我究竟做错了什么?如果同一个函数中有一个 yield 语句,似乎递归调用 .EnumerateLeaves 将不起作用。
任何帮助将不胜感激。提前致谢。
编辑:我忘了提到一个分支可以有叶子或分支作为孩子,因此递归。
c++ - 如何从 stl 数据结构中删除 reverse_iterator?
由于某种原因,以下代码失败。您不能简单地使用它的 base() 方法擦除 reverse_iterator。
如何正确地执行上述操作?给定一个与您要擦除的内容相对应的 reverse_iterator,您如何擦除它?
请注意,不幸的是,擦除不会采用 reverse_iterators。它想要真实的东西。
delphi - 有什么方法可以获取容器控件上的所有控件?
我有一个带有一堆控件的表单,我想遍历某个面板上的所有控件并启用/禁用它们。
我试过这个:
但这无济于事。原来所有组件都在表单的组件集合中,而不是它们的父对象。那么有谁知道是否有任何方法可以将所有控件放入控件中?(除了像这样丑陋的解决方法,这是我最终不得不做的):
有人请告诉我有更好的方法...
c# - 返回 IEnumerable 的迭代器方法之间有什么区别吗和 IEnumerator?
考虑两个具有相同主体的迭代器方法:
是否有任何情况下 callIt2
与 call 不同It1.GetEnumerator()
?
是否有充分的理由将迭代器定义为IEnumerator<T>
over IEnumerable<T>
?我唯一能想到的就是当你在实施IEnumerable<T>.GetEnumerator()
.
编辑:迭代器方法是指使用yield return
和yield break
构造的方法。
c++ - 如何从模板类中的变量返回向量迭代器?
我正在尝试为模板类中的向量返回一个迭代器(我不确定这是否会有所不同,但我已经读过它,所以我想我会提到它)。问题是当我尝试这个时,我得到一个关于 C++ 不支持 default-int 的错误。我在网上看过,从我在论坛和解释中看到的,我不认为我离得那么远,它只是无法编译。
我得到的错误是:
编辑:
更改了末端尖括号,使它们不那么靠近 - 同样的错误。
关于为什么会发生这种情况的任何想法?
与往常一样,提前感谢您的建议/帮助!
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:
c++ - 有什么方法可以检查迭代器是否有效?
例如,对于操作容器映射的两个线程,测试迭代器是否仍然有效(出于性能原因)的正确方法是什么?
或者只能通过间接的方式来做到这一点。示例代码:
c# - 在 C# 中实现双向枚举器
有没有办法使用 yield 块来实现一个IEnumerator<T>
可以向后(MoveLast()
)以及向前的方法?
perl - 如何在 Perl 中迭代/取消引用一组子例程 refs?
我试图弄清楚如何迭代一组子程序参考。
这种语法有什么问题?
提前致谢!