gpt4 book ai didi

iterator - 在不创建临时向量的情况下迭代成对的 block

转载 作者:行者123 更新时间:2023-11-29 07:51:56 24 4
gpt4 key购买 nike

我正在尝试将一个向量迭代为成对的 block (在我的例子中,它是一个表示为连续位图的图像,我想同时访问两行中的像素)。

问题是我不能执行 .chunks(w).chunks(2),但必须在两者之间创建一个临时向量。

有没有办法完全用迭代器来做? (如果结果是迭代器本身,我没问题)

playground

let input: Vec<_> = (0..12).collect();

let tmp: Vec<_> = input.chunks(3).collect();
let result: Vec<_> = tmp.chunks(2).collect();

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

[[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]]

最佳答案

Oh, I've got it! I can split larger chunks:

input.chunks(2*3).map(|dbl| dbl.split_at(3)).collect();

是的,或者你可以这样做:

let tmp: Vec<_> = input
.chunks(2 * 3)
.map(|x| x.chunks(3).collect::<Vec<_>>())
.collect();

这输出与您的示例完全相同的内容,没有混合您的解决方案中的元组和数组:

[[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]]

关于iterator - 在不创建临时向量的情况下迭代成对的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30823512/

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