iterator相关内容

C++ 容器的迭代器失效规则

C++ 容器的迭代器失效规则是什么? (注意:此问答是Stack Overflow 的 C++ 常见问题解答中的条目.元讨论关于问题本身应该发布在 开始所有的元问题这个,不在这里.) 解决方案 C++17 (所有参考资料均来自 CPP17 的最终工作草案 - n4659) 插入 序列容器 vector:函数insert、emplace_back、emplace、push_b ..
发布时间:2021-12-01 14:39:33 C/C++开发

如何构建一个基本的迭代器?

如何在 python 中创建迭代函数(或迭代器对象)? 解决方案 python 中的迭代器对象符合迭代器协议,这基本上意味着它们提供了两种方法:__iter__() 和 __next__(). __iter__ 返回迭代器对象并被隐式调用在循环开始处. __next__() 方法返回下一个值,并在每次循环增量时隐式调用.当没有更多值要返回时,此方法会引发 StopIterati ..
发布时间:2021-11-30 23:49:47 Python

迭代器、可迭代和迭代究竟是什么?

Python 中“iterable"、“iterator"和“iteration"的最基本定义是什么? 我已经阅读了多个定义,但我无法确定确切含义,因为它仍然无法理解. 有人可以用外行术语帮助我理解这 3 个定义吗? 解决方案 迭代 是一个通用术语,用于一个接一个地处理某事的每一项.任何时候您使用显式或隐式循环来遍历一组项目,这就是迭代. 在 Python 中,itera ..
发布时间:2021-11-30 23:29:28 Python

什么是“产量"?关键字呢?

yield 关键字在 Python 中有什么用?它有什么作用? 例如,我试图理解这段代码1: def _get_child_candidates(self, distance, min_dist, max_dist):如果 self._leftchild 和距离 - max_dist ..
发布时间:2021-11-30 23:01:38 Python

遍历动态向量时使用 auto 的异常行为

我正在用 auto (附加代码)遍历一个向量.在遍历时,我还在后面附加了一些元素.我没想到我得到的输出. #include #include 使用命名空间标准;向量动态向量;无效访问( ){对于(自动我:dynamic_vector){如果(我== 3){dynamic_vector.push_back( 4 );dynamic_vector.push_back( 5 );}cout ..
发布时间:2021-11-30 18:19:56 C/C++开发

在 for(-each) 自动循环中擦除项目

在像这样的 for 循环中使用自动变量时,有没有办法擦除特定元素? for(auto a: m_Connections){如果(某事){//删除这个元素}} 我知道我可以说 for(auto it=m_map.begin() ... 或 for(map::iterator it=m_map.begin() ... 并手动增加迭代器(和擦除),但如果我能用更少的代码行来做到这一点,我会更 ..
发布时间:2021-11-30 18:15:25 C/C++开发

Java 中传统 for 循环与 Iterator/foreach 的性能

在遍历 ArrayList、HashMap 和其他集合时比较传统的 for 循环和 Iterator 是否有任何性能测试结果可用? 或者只是为什么我应该在 for 循环上使用迭代器,反之亦然? 解决方案 假设这就是你的意思: //传统的for循环for (int i = 0; i ..
发布时间:2021-11-25 20:30:51 Java Web开发

为什么 Java 的 Iterator 不是 Iterable?

为什么Iterator 接口没有扩展Iterable? iterator() 方法可以简单地返回 this. 这是故意的还是只是 Java 设计者的疏忽? 能够使用带有迭代器的 for-each 循环会很方便: for(Object o : someContainer.listSomeObjects()) {....} 其中 listSomeObjects() 返回一个迭代器 ..
发布时间:2021-11-25 20:27:14 Java Web开发

在迭代期间向集合添加元素

是否可以在迭代时向集合添加元素? 更具体地说,我想迭代一个集合,如果一个元素满足某个条件,我想向集合中添加一些其他元素,并确保这些添加的元素也被迭代.(我意识到这可能导致无限循环,但我很确定它不会在我的情况下.) 来自 Sun 的 Java 教程表明这是不可能:“请注意,Iterator.remove 是在迭代期间修改集合的唯一安全方式;如果底层集合以任何其他方式修改,则行为未指定,而 ..
发布时间:2021-11-25 15:54:39 Java Web开发

如何将迭代器转换为流?

我正在寻找一种简洁的方法来转换 Iterator 到 Stream 或更具体地说,将迭代器“查看"为流. 出于性能原因,我想避免在新列表中复制迭代器: IteratorsourceIterator = Arrays.asList("A", "B", "C").iterator();集合copyList = new ArrayList();sourceIterator.forEachRema ..
发布时间:2021-11-25 15:47:25 Java Web开发

尽管使用了同步的 ConcurrentModificationException

公共同步 X getAnotherX(){如果(迭代器.hasNext()){X b = iterator.next();字符串名称 = b.getInputFileName();...返回 b;}否则{返回空;}} 尽管声明头中有synchronized 语句,我仍然在使用iterator.next() 的那一行得到一个ConcurrentModificationException 异常;怎 ..
发布时间:2021-11-25 15:02:33 Java Web开发

在 Java 的 foreach 循环中调用 remove

在 Java 中,在使用 foreach 循环遍历集合时对集合调用 remove 是否合法?例如: List姓名 = ....对于(字符串名称:名称){//做点什么名称.删除(名称).} 作为附录,删除尚未迭代的项目是否合法?例如, //假设姓名列表为重复条目列表姓名 = ....对于(字符串名称:名称){//做点什么while (names.remove(name));} 解决方案 要 ..
发布时间:2021-11-25 11:16:43 Java Web开发

在 Java 的 foreach 循环中调用 remove

在 Java 中,在使用 foreach 循环遍历集合时对集合调用 remove 是否合法?例如: List姓名 = ....对于(字符串名称:名称){//做点什么名称.删除(名称).} 作为附录,删除尚未迭代的项目是否合法?例如, //假设姓名列表为重复条目列表姓名 = ....对于(字符串名称:名称){//做点什么while (names.remove(name));} 解决方案 要 ..
发布时间:2021-11-19 22:42:41 Java Web开发

如何正确地遍历一个大的 json 文件

亲爱的 Stackoverflow 社区, 我有一个 34 GB 的 json 文件,里面有很多数据.我试图通过使用 mongoimport --file file.json 导入到我的 mongodb - 但它失败了,当然文件太大并且抛出了一个内存系统抛出错误,你知道的.是否可以使用 php 代码通过游标遍历文件?我在这方面的经验为零,有人告诉我这是可能的.我想知道文件是如何构建的,但我不 ..
发布时间:2021-11-18 05:13:07 其他开发

如何使用索引和值迭代 1d NumPy 数组

对于python dict,我可以使用iteritems() 同时循环遍历键和值.但是我找不到 NumPy 数组的这种功能.我必须像这样手动跟踪 idx: idx = 0对于θ中的j:some_function(idx,j,theta)idx += 1 有没有更好的方法来做到这一点? 解决方案 有几个替代方案.下面假设您正在迭代一维 NumPy 数组. 使用 range 进行迭代 ..
发布时间:2021-11-18 05:03:22 其他开发

这段PHP代码可以去掉for循环吗?

我有一系列整数,这些数字可能有也可能没有.是否可以在不使用循环结构的情况下找到最小的缺失数?如果没有缺失的数字,函数应该返回范围的最大值加一. 这就是我使用 for 循环解决它的方法: $range = [0,1,2,3,4,6,7];//排序以防范围不符合顺序分类($范围);$range = array_values($range);$first = 真;for ($x = 0; $x ..
发布时间:2021-11-18 04:30:07 其他开发

ES6 使用 for..of 反向迭代数组,我是否遗漏了规范中的某些内容?

在 ES6 中,我们现在有 迭代器 和 for..of 来迭代它们.我们有一些数组的内置函数;尤其是 keys、values 和 entries. 这些方法允许人们执行通常会执行的大部分迭代.但是,反向迭代呢?这也是一项非常常见的任务,我在 spec 专门针对它?或者我错过了? 好的,我们有 Array.prototype.reverse 但我不一定要在原地反转一个大数组,然后在完成后 ..
发布时间:2021-11-18 04:16:32 其他开发

使用通用迭代器而不是特定的列表类型

我对 Rust 非常陌生,来自 C#/Java/类似. 在 C# 中,我们有 IEnumerable 可用于迭代几乎任何类型的数组或列表.C# 还有一个 yield 关键字,可用于返回惰性列表.这是一个例子... //懒惰地返回可枚举中的偶数IEnumerableEvens(IEnumerable输入){foreach(输入中的var x){如果 (x % 2 == 0){收益回报 x;} ..
发布时间:2021-11-18 03:27:49 其他开发