如何获得有序集合/有序映射的最大值和最小值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获得有序集合/有序映射的最大值和最小值?相关的知识,希望对你有一定的参考价值。
Rust的有序集是BTreeSet
:
BTreeSet
[有序映射是use std::collections::BTreeSet;
// Type inference lets us omit an explicit type signature (which
// would be `BTreeSet<&str>` in this example).
let mut books = BTreeSet::new();
// Add some books.
books.insert("A Dance With Dragons");
books.insert("To Kill a Mockingbird");
books.insert("The Odyssey");
books.insert("The Great Gatsby");
。
由于set和map是有序的,因此应该有一种方法来获取包含的最大和最小元素。您如何获得它们?
此类型没有最大或最小成员方法(固有的或来自特征的。)>
[O(log(n))中访问此信息的最佳方法是直接使用迭代器,如开发人员团队在BTreeMap
中提到的那样:
BTreeMap
您可以使用issue 31690 from GitHub和
let map: BTreeSet<V> = ...; let min = map.iter().next(); let max = map.iter().next_back();
方法来获得集合的最大值和最小值,但是使用有序集合进行操作将浏览整个集合,而忽略了我们从订单中获得的信息。
Iterator::max()
[
Iterator::min()
显示// This will be very slow map.iter().max() map.iter().min()
的两个选择:
Issue 59947 has a benchmark
以上是关于如何获得有序集合/有序映射的最大值和最小值?的主要内容,如果未能解决你的问题,请参考以下文章