Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 如何使用类似地图的闭包对生锈向量进行排序?_Sorting_Rust_Iterator_Closures - Fatal编程技术网

Sorting 如何使用类似地图的闭包对生锈向量进行排序?

Sorting 如何使用类似地图的闭包对生锈向量进行排序?,sorting,rust,iterator,closures,Sorting,Rust,Iterator,Closures,我想对结构向量进行排序,使用某种类似闭包的格式。我是这么想的: struct PointTracker{ 阳性:u32, 负片:u32,, } // .... fn main(){ 出租项目:Vec/。。。。 //例如:[{正:3,负:4},{正:5,负:0},{正:2,负:10}] 让已排序的项目=项目 .国际热核实验堆(iter) .使用(| x:PointTracker | x.positive-x.negative)对_进行排序 收集::(); //从最大到最小排序: //[{正:5,负

我想对结构向量进行排序,使用某种类似闭包的格式。我是这么想的:

struct PointTracker{
阳性:u32,
负片:u32,,
}
// ....
fn main(){
出租项目:Vec/。。。。
//例如:[{正:3,负:4},{正:5,负:0},{正:2,负:10}]
让已排序的项目=项目
.国际热核实验堆(iter)
.使用(| x:PointTracker | x.positive-x.negative)对_进行排序
收集::();
//从最大到最小排序:
//[{正:5,负:0},{正:3,负:4},{正:2,负:10}]
}
我想要的是某种函数,如上面所述,它根据闭包中返回的值对项目进行排序。它取正值,减去负值,然后返回结果。第一个未排序项目的总和为:
[-1,5,-8]
,排序项目的总和为(如预期的那样):
[5,-1,-8]


此函数是否有某种板条箱,或者如果不存在,我是否应该编写自己的板条箱?

您正在搜索的函数是
sort\u by\u key

#[派生(调试)]
结构点跟踪器{
阳性:u32,
负片:u32,,
}
fn main(){
让mut item=vec[
点跟踪器{
正面:3,,
否:4,,
},
点跟踪器{
肯定:5,
负数:0,,
},
点跟踪器{
正面:2,,
负数:10,,
},
];
项。按键排序(| x | x.正为i32-x.负为i32);
println!(“{:#?}”,项目);
}
输出:

[
点跟踪器{
正面:2,,
负数:10,,
},
点跟踪器{
正面:3,,
否:4,,
},
点跟踪器{
肯定:5,
负数:0,,
},
]

您正在搜索的功能是
按键排序

#[派生(调试)]
结构点跟踪器{
阳性:u32,
负片:u32,,
}
fn main(){
让mut item=vec[
点跟踪器{
正面:3,,
否:4,,
},
点跟踪器{
肯定:5,
负数:0,,
},
点跟踪器{
正面:2,,
负数:10,,
},
];
项。按键排序(| x | x.正为i32-x.负为i32);
println!(“{:#?}”,项目);
}
输出:

[
点跟踪器{
正面:2,,
负数:10,,
},
点跟踪器{
正面:3,,
否:4,,
},
点跟踪器{
肯定:5,
负数:0,,
},
]

-这就是您需要的吗?您不能对泛型迭代器进行排序,因为它们不允许随机访问。但是你可以和朋友一起对向量或切片进行排序这就是您需要的吗?您不能对泛型迭代器进行排序,因为它们不允许随机访问。但是你可以和你的朋友一起对向量或切片进行排序。除此之外,
sort\u by\u key
and之间的差异可能值得一提,或者像
Itertools
这样的板条箱按照作者的想法进行排序,请参见:和。对此竖起大拇指,Jason,非常感谢Rabbid76。出于某种原因,
sort_by_key
没有给我所需的结果,所以我转而使用
itertools
,我得到了我想要的实现。除此之外,
sort_by_key
之间的差异可能值得一提,或者像
itertools
这样的板条箱按照作者的想法进行,看:还有。杰森,我竖起大拇指,非常感谢拉比76。出于某种原因,
sort\u by\u key
没有给我所需的结果,所以我转而使用
itertools
,得到了我想要的实现。