iterator 相关问题

迭代器是一种面向对象的编程模式,允许遍历集合,不知道实际实现或物理内存中的对象地址。它是四人帮的行为设计模式之一。

Python RuntimerError,RuntimeError('迭代期间字典改变了大小')

当我尝试将键、值插入字典时,此代码将引发,RuntimeError('字典在迭代期间更改了大小') 这是我的代码: #1. Delcare 字典 val 在这里 dict_plugin_info = {} #2. ...

回答 1 投票 0

铁锈使用过滤器扫描

我正在尝试从迭代器中删除一些外部可变状态 fn 主() { 让非递增: Vec = vec![1, 0, 2, 6, 3, 9]; 让 mut max_so_far = 0; 对于 non_increas 中的 val...

回答 1 投票 0

为什么我需要在 ListIterator 中调用 previous() 两次才能进行“反向”迭代?

我们知道ListIterator有next()和previous()方法,可以让我们双向遍历。所以我做了一个小程序来尝试一下。 List 歌曲 = new ArrayList<>();

回答 2 投票 0

我如何重构一个方法来擦除基于反向迭代器的元素以避免触发有关复制单个迭代器的警告?

我有一个方法,它接受一个 stl 反向迭代器,做一些工作,擦除元素,并返回一个指向下一个元素的迭代器。例如: #包括 std::向量 我有一个方法,它接受一个 stl 反向迭代器,做一些工作,擦除元素,然后返回一个指向下一个元素的迭代器。例如: #include <vector> std::vector<int> int_vector; using ReverseIteratorType = decltype(int_vector)::reverse_iterator; void do_stuff(); ReverseIteratorType erase_with_reverse_iter(ReverseIteratorType iter) { do_stuff(); std::advance(iter, 1); int_vector.erase(iter.base()); return iter; } 编译时不会出现警告,并且看起来工作正常。问题是,当使用 libstdc++ 运行此代码以验证每个迭代器在使用时是否有效时,如果 iter 指向集合的最后一个元素,则会引发异常,因为迭代器在擦除后被视为单个迭代器,并且不允许调用单个迭代器的复制构造函数。 (这里的另一篇文章对这个问题有更深入的解释。). godbolt 示例在此演示了该问题 两个问题 禁止复制单个迭代器是否违反了标准,或者这是 libstdc++ 的健全性检查? 您将如何重构以避免这个问题? 你不应该忽略erase()的返回值。 erase() 使擦除元素处及其之后的元素的迭代器(以及指针和引用)无效(按容器顺序,而不是迭代器顺序。这包括作为参数传入的迭代器。

回答 1 投票 0

在 Rust 中为具有字段 HashSet 的结构实现迭代器

我喜欢为 struct FileSystem 实现一个迭代器: pub 结构文件系统 <'a> { 文件系统:哈希集::, 迭代器: hash_set::Iter<'a,FileContent>, } 暗示<...

回答 1 投票 0

python:filter()一个可迭代的,计算过滤和未过滤的项目

我有一个很大的Iterable。 我想使用 filter() 函数过滤它。 我如何计算(以某种优雅的方式)有多少项目被过滤? (同样的问题可能适用于 map()、reduce() 等) 我当然可以...

回答 4 投票 0

如何创建迭代器的副本? [重复]

我尝试使用赋值创建迭代器的副本,但是它创建了引用原始迭代器本身的迭代器的副本。例如: 我的列表 = [5, 4, 3,2] 第一个_it = iter(我的...

回答 1 投票 0

C++ 术语,表示可以通过 begin 和 end 进行迭代的对象

迭代器是可以迭代对象集合的事物的通用词。 另一方面,我不确定 C++ 中是否有一个普遍接受的词来表示集合本身,部分......

回答 1 投票 0

在文件系统上迭代的类对于 Python 迭代器协议来说是好还是坏?

我了解如何通过实现 __next__ 和 __iter__ 将类变成迭代器。网上有大量关于如何执行此操作的资源,例如:https://www.w3schools.com/python/python_iter...

回答 1 投票 0

修改指定值的范围“视图”

我正在嵌入式平台上实现许多音频效果。从硬件中,我获得了一个样本输入缓冲区,其格式需要一些调整 1,然后是过程本身,接下来...

回答 1 投票 0

使用引用的生成器时如何处理生命周期?

我目前正在致力于实现一个生成大量对象并返回它们的迭代器。由于这段代码有很多检查,我想使用 genawater 板条箱中的生成器,所以......

回答 1 投票 0

如何在 Rust 中有条件地将一个迭代器中的元素替换为另一个迭代器中的元素

我正在寻找一个迭代器适配器,它通过有条件地将主输入迭代器中的元素替换为辅助输入迭代器中的元素来组合(多路复用)两个输入迭代器的元素...

回答 1 投票 0

c++ 映射/集合迭代器不可取消引用

我想向您寻求提示,因为我是初学者,在互联网上找不到任何合适的答案。 我收到此错误: 调试断言失败 - 映射/设置迭代器不可解除引用 在...

回答 5 投票 0

减法或递减指向开始的随机访问迭代器

考虑以下代码 无效 foo( 布尔向前 ) { 矢量::迭代器 it, end_it; int 目录; it = some_global_vector.begin() + some_position; 如果(前进) ...

回答 1 投票 0

在 foreach(T item in items) 之前 if(items != null) 是多余的吗?

我经常遇到如下代码: if ( 项目 != null ) { foreach(项目中的T项) { //... } } 基本上,if 条件确保 foreach 块仅在 if

回答 13 投票 0

C++ 迭代围绕列表的类

抱歉,这个标题太糟糕了,但我不知道如何浓缩我想说的内容。不管怎样,我有一个包含列表的模板类,像这样简单: 模板 班级

回答 1 投票 0

python - 使用 AsyncGenerator 或 AsyncIterator 进行打字的区别?

我创建了一个完全类型化的不和谐异步库。 我有一个从 aiohttp get 请求创建对象的方法,如下例所示: 异步 def get_bans(self): “&

回答 2 投票 0

在实现 ArrayAccess 和 Iterator 的对象上使用 foreach

有没有一种方法可以迭代实现 ArrayAccess 和 Iterator 接口的对象的键?数组访问很有魅力,但我不能在那些对象上使用 foreach,这对我有很大帮助。我...

回答 2 投票 0

使用 for-each 进行迭代

for (String str : m.keySet()) {//这很好用 } 设置 set = m.keySet(); for (String str : set) {//类型不匹配:无法从元素类型Object转换为String } 两者都在做同样的事情...

回答 2 投票 0

python 优雅的方法来迭代缓冲区,其大小不能被步骤整除[重复]

假设我有一个长度为 953 的缓冲区 buf=b"..." 。我想使用步长 33 对其进行迭代。现在 953 不能被 33 整除,因此余数为 29 。 我想迭代...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.