gpt4 book ai didi

iterator - 使用迭代器的所有完整 block (可能会跳过最后一个)

转载 作者:行者123 更新时间:2023-11-29 07:46:02 25 4
gpt4 key购买 nike

我想将一个 Vec 分成一些等长的部分,然后 map 覆盖它们。我有一个调用 Vecchunks() 方法的迭代器。这可能会给我留下一个比其他部分更小的部分,这将是它生成的最后一个元素。

为了确保所有部分的长度相等,我只想删除最后一个元素,然后在剩下的部分调用 map()

最佳答案

作为Sebastian Redl points out ,检查每个 block 的 length 是针对您的特定情况的更好解决方案。

要回答您的问题(“使用迭代器中除最后一个元素之外的所有元素”),您可以使用 Iterator::peekable展望 future 。这将告诉您是否在处理最后一项,如果是,您可以决定跳过处理它。

let things = [0, 1, 2, 3, 4];

let mut chunks = things.chunks(2).peekable();
while let Some(chunk) = chunks.next() {
if chunks.peek().is_some() {
print!("Not the last: ");
} else {
print!("This is the last: ")
}

println!("{:?}", chunk);
}

To be sure that all parts have equal length, I just want to drop that last element

总是删除最后一个元素不会这样做。例如,如果您均匀地分块输入,那么总是丢弃最后一个元素将丢失一个完整的 block 。您必须进行一些预先计算才能决定是否需要删除它。

关于iterator - 使用迭代器的所有完整 block (可能会跳过最后一个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48102662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com