Struct splay_tree::heap::SplayHeap
[−]
[src]
pub struct SplayHeap<T> {
// some fields omitted
}A priority queue implemented with a splay tree.
This will be a max-heap.
A splay tree based heap is a self-adjusting data structure.
It performs pushing and popping in O(log n) amortized time.
It is a logic error for a key to be modified in such a way that
the key's ordering relative to any other key,
as determined by the Ord trait, changes while it is in the map.
This is normally only possible through Cell, RefCell, global state, I/O, or unsafe code.
Examples
use splay_tree::SplayHeap; let mut heap = SplayHeap::new(); heap.push(0); heap.push(10); heap.push(7); assert_eq!(heap.peek(), Some(&10)); assert_eq!(heap.pop(), Some(10)); assert_eq!(heap.pop(), Some(7)); assert_eq!(heap.pop(), Some(0)); assert_eq!(heap.pop(), None);
Methods
impl<T> SplayHeap<T> where T: Ord[src]
fn new() -> Self
Creates an empty SplayHeap as a max-heap.
Examples
use splay_tree::SplayHeap; let mut heap = SplayHeap::new(); heap.push(10); assert_eq!(heap.pop(), Some(10));
fn peek(&mut self) -> Option<&T>
Returns the greatest item in the heap, or None if it is empty.
NOTICE
Because SplayHeap is a self-adjusting amortized data structure,
this function requires the mut qualifier.
Examples
use splay_tree::SplayHeap; let mut heap = SplayHeap::new(); assert_eq!(heap.peek(), None); heap.push(1); heap.push(5); heap.push(2); assert_eq!(heap.peek(), Some(&5));
fn pop(&mut self) -> Option<T>
Removes the greatest item from the heap and returns it, or None if it is empty.
Examples
use splay_tree::SplayHeap; let mut heap: SplayHeap<_> = vec![1, 3].into_iter().collect(); assert_eq!(heap.pop(), Some(3)); assert_eq!(heap.pop(), Some(1)); assert_eq!(heap.pop(), None);
fn push(&mut self, item: T)
Pushes an item onto the heap.
Examples
use splay_tree::SplayHeap; let mut heap = SplayHeap::new(); heap.push(3); heap.push(5); heap.push(1); assert_eq!(heap.len(), 3); assert_eq!(heap.peek(), Some(&5));
fn clear(&mut self)
Drops all items from the heap.
Examples
use splay_tree::SplayHeap; let mut heap: SplayHeap<_> = vec![1, 3].into_iter().collect(); assert!(!heap.is_empty()); heap.clear(); assert!(heap.is_empty());
impl<T> SplayHeap<T>[src]
fn iter(&self) -> Iter<T>
Returns an iterator visiting all items in sorted (descending) order.
Examples
use splay_tree::SplayHeap; let heap: SplayHeap<_> = vec![1, 4, 2, 3].into_iter().collect(); // Print all values in `heap` in sorted order for x in heap.iter() { println!("{}", x); }
fn len(&self) -> usize
Returns the length of the heap.
Examples
use splay_tree::SplayHeap; let heap: SplayHeap<_> = vec![1, 3].into_iter().collect(); assert_eq!(heap.len(), 2);
fn is_empty(&self) -> bool
Checkes if the heap is empty.
Examples
use splay_tree::SplayHeap; let mut heap = SplayHeap::new(); assert!(heap.is_empty()); heap.push(1); assert!(!heap.is_empty()); heap.pop(); assert!(heap.is_empty());
Trait Implementations
impl<T: Clone> Clone for SplayHeap<T>[src]
fn clone(&self) -> SplayHeap<T>
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0
Performs copy-assignment from source. Read more
impl<T: Debug> Debug for SplayHeap<T>[src]
impl<T> Default for SplayHeap<T> where T: Ord[src]
impl<T> FromIterator<T> for SplayHeap<T> where T: Ord[src]
fn from_iter<I>(iter: I) -> Self where I: IntoIterator<Item=T>
Creates a value from an iterator. Read more
impl<T> IntoIterator for SplayHeap<T>[src]
type Item = T
The type of the elements being iterated over.
type IntoIter = IntoIter<T>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Self::IntoIter
Creates an iterator from a value. Read more
impl<'a, T> IntoIterator for &'a SplayHeap<T>[src]
type Item = &'a T
The type of the elements being iterated over.
type IntoIter = Iter<'a, T>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Self::IntoIter
Creates an iterator from a value. Read more
impl<T> Extend<T> for SplayHeap<T> where T: Ord[src]
fn extend<I>(&mut self, iter: I) where I: IntoIterator<Item=T>
Extends a collection with the contents of an iterator. Read more
impl<'a, T> Extend<&'a T> for SplayHeap<T> where T: Copy + 'a + Ord[src]
fn extend<I>(&mut self, iter: I) where I: IntoIterator<Item=&'a T>
Extends a collection with the contents of an iterator. Read more