问题标签 [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 投票
4 回答
37122 浏览

c# - 什么时候应该使用 IEnumerator 在 c# 中循环?

我想知道是否有任何时候在 foreach 循环上使用 IEnumerator 来遍历集合是有利的?例如,是否有任何时候使用以下代码示例中的任何一个比另一个更好?

代替

0 投票
3 回答
2663 浏览

python - 是否有 Python 的 re.findall/re.finditer(迭代正则表达式结果)的 Perl 等价物?

在 Python 中编译的正则表达式模式有一个findall方法可以执行以下操作:

返回字符串中模式的所有非重叠匹配,作为字符串列表。从左到右扫描字符串,并按找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。空匹配包含在结果中,除非它们触及另一个匹配的开始。

在 Perl 中执行此操作的规范方法是什么?我能想到的一个天真的算法是“当搜索并用空字符串替换成功时,执行 [suite]”。我希望有更好的方法。:-)

提前致谢!

0 投票
4 回答
866 浏览

c++ - 使用 STL 迭代器而不初始化它

我想做这样的事情:

但我无法创建迭代器并将其初始化为 NULL。有什么办法可以做到这一点吗?理想情况下,我会在交换机中创建并分配迭代器,但它会立即超出范围。

0 投票
7 回答
13424 浏览

c++ - 一个 C++ 迭代器适配器,它包装和隐藏内部迭代器并转换迭代类型

玩弄过这个我怀疑这是不可能的,但我想我会问专家。我有以下 C++ 代码:

我想将这些方法添加到容器中:

为了调用者可以写:

所以本质上我想提供一个类,它似乎在迭代 IInterface 指针的某些集合(不允许 Begin() 和 End() 的调用者看到),但实际上是在迭代指向其他指针的集合可以转换为 IInterface 指针的对象(专用于 Container 类)。

几个关键点:

  • MagicIterator是要在外面定义的Container
  • Container::Item必须保持私密。
  • MagicIterator必须迭代IInterface指针,尽管事实上Container持有一个std::list<Container::Item>. Container::Item包含一个Object*, 并且Object可以用来获取IInterface*.
  • MagicIterator必须可与多个类似于 Container 的类重用,但可能在内部具有不同的列表实现,其中包含不同的对象 ( std::vector<SomeOtherItem>, mylist<YetAnotherItem>),并且IInterface*每次都以不同的方式获得。
  • MagicIterator不应该包含特定于容器的代码,尽管它可以委托给这样做的类,前提是这种委托没有硬编码到内部的特定容器MagicIterator(例如,编译器会以某种方式自动解析)。
  • 该解决方案必须在 Visual C++ 下编译,而不使用其他库(例如 boost),这需要其作者的许可协议。
  • 此外,迭代可能不会分配任何堆内存(因此没有new()malloc()在任何阶段),并且没有memcpy().

感谢您的宝贵时间,即使您只是在阅读;这个真的一直困扰着我!

更新:虽然我得到了一些非常有趣的答案,但还没有一个满足上述所有要求。值得注意的是,棘手的领域是 i) 以某种方式将 MagicIterator 与 Container 分离(默认模板参数不会削减它),以及 ii) 避免堆分配;但我真的在寻求涵盖所有上述项目符号的解决方案。

0 投票
2 回答
4352 浏览

c++ - 错误:从 long int 转换为非标量类型,将迭代器与 null 进行比较

您好,我希望有人可以解释这个问题。这是代码:

};

在我这样做之后:

我收到以下错误:

将迭代器初始化为 NULL 的问题在哪里?

0 投票
8 回答
8781 浏览

python - 从集合中选择单个项目:Python

我创建了一个实用函数来从生成器表达式返回预期的单个项目

这是一个很好的方法吗?

0 投票
1 回答
4332 浏览

c++ - 在 eof() 循环中使用迭代器进行 C++ 标记化

我正在尝试调整这个答案

如何在 C++ 中标记字符串?

我当前的字符串问题涉及从文件中读取直到 eof。

从这个源文件:

我想用所有标记化的词创建一个向量。示例:vector<string> allTheText[0] should be "Fix"

我不明白的目的,istream_iterator<std::string> end;但我包括因为它在原始海报的答案中。

到目前为止,我有这个非工作代码:

编辑:

我将代码更改为

并得到一个 RuntimeError,为什么?

0 投票
1 回答
487 浏览

c++ - 如何更改此标记化过程以处理具有多行的文本文件?

我正在处理这个源代码:

它不是对单行进行标记并将其放入向量结果中,而是对从该文本文件中取出的一组行进行标记并将结果单词放入单个向量中。

到目前为止,我只清楚我需要使用

让循环运行。

但我认为这行不通:

while (getline(streamOfText, readTextLine)) { cout << readTextLine << endl;

// 从字符串构造一个流 std::stringstream strstr(readTextLine);

// 使用流迭代器将流作为空格分隔的字符串复制到向量 std::istream_iterator it(strstr); std::istream_iterator 结束;std::vector 结果(它,结束);

0 投票
1 回答
897 浏览

c++ - C++ 中迭代器的键/值功能

我知道这个问题以前曾以各种形式出现过,但这略有不同。

我有一个包含 std::map 的类。尽管我希望在类内将映射用于其他目的,但在外部我想将迭代器适配器公开给映射内的值(即 std::pair 中的第二项)。

例如在python中我可能会做这样的事情:

我如何在 C++ 中执行此操作,将实现隐藏在类中?

谢谢,

0 投票
3 回答
3376 浏览

java - 遍历二维 Java 数组

我了解所有内容,直到有 for which 迭代边缘。那里到底发生了什么?

e[0]编辑:为什么使用and访问它们e[1]?是e[0]第一个数字和e[1]第二个?