(总觉得.iter很漂亮,故有此问) 通常来说,写程序(比如对矩阵赋值)的时候,很难避免二重循环,而如果矩阵是对称阵,在对矩阵的上三角阵和下三角阵进行赋值的时候,我们难免用到类似的循环: for(i=1;i<N;i++)for(j=0;j<i;j++){matrix[i][j]=matrix[j][i]=...} 在Rust里面,我们可以用for i in 1..N{for j in 0..i{...}}达到同样的效果
——然而,我想问的是,我们能用iter达到类似的效果吗?
另外,如果这个矩阵代表的是两点之间的距离,那么我们一定有一个大小为N的Vec,不妨记作points。 如果我们想计算points之间的距离,我们可以用for i in 1..N{for j in 0..i{let dist0=dist_function(points[i],points[j]);dist[j][i]=dist0;dist[i][j]=dist0;}}完成计算。
但……能否用iter写出更好看的程序呢?
最后……如果对Vec排序,我们可以用任何一种方法……但如果非要手写冒泡排序,大概免不了类似for i in 1..N{for j in 0..i{...}}这样的结构 这个能用iter(iter_mut)实现吗?
评论区
写评论我想的是能不能在有points:Vec之后
用points.iter()之类的神奇操作完成任务
最开始的描述有些词不达意了。
(毕竟,0..N本身就是一个iter……)
对以下内容的回复:
playground
建议还是直接写循环变量吧,又不是 haskell……
能给一个例子吗?
用迭代器写冒泡/计算n个点的两两距离
不优雅也行啊~
对以下内容的回复:
能。
不优雅。
完毕。😂