在C++中,可以自定义代码std::set
用于排序参数.默认情况下,它使用std::less
,但可以使用Compare
模板参数进行更改.
Rust's BTreeSet
使用Ord
特征对类型进行排序.我不知道有什么方法可以重写这种行为——它内置在容器存储的类型的类型约束中.
然而,建立一个项目列表通常是有意义的,该列表按照一些本地有用的指标进行排序,但这并不是比较项目的最佳方式.或者,假设我想对use
d类型的项目进行排序;在这种情况下,即使我愿意,也不可能自己为该类型实现Ord
.
解决方法当然是构建一个普通的旧项目Vec
个,然后再构建sort
个.但在我看来,这并不像插入时自动排序那样干净.
有没有一种方法可以使用Rust容器类型的替代比较器?