Struct nekolib::ds::BTreeBimap
source · pub struct BTreeBimap<L: Ord, R: Ord> { /* private fields */ }
Expand description
双方向連想配列。
$k\mapsto v$ ではなく、全単射となるように $k_l\mapsto k_r$ と $k_r\mapsto k_l$ を管理する。
Examples
use nekolib::ds::BTreeBimap;
let mut bimap = BTreeBimap::new();
bimap.insert(1, 'a');
bimap.insert(2, 'b');
bimap.insert(3, 'c');
bimap.insert(1, 'b');
assert_eq!(bimap.len(), 2); // {1: 'b', 3, 'c'}
bimap.remove_left(&1);
bimap.remove_right(&'c');
assert!(bimap.is_empty());
Implementations§
source§impl<L: Clone + Ord, R: Clone + Ord> BTreeBimap<L, R>
impl<L: Clone + Ord, R: Clone + Ord> BTreeBimap<L, R>
pub fn new() -> Self
pub fn is_empty(&self) -> bool
pub fn len(&self) -> usize
pub fn insert(&mut self, l: L, r: R)
pub fn remove_left(&mut self, l: &L)
pub fn remove_right(&mut self, r: &R)
pub fn range_left<T, B>(&self, range: B) -> Range<'_, L, R>where T: Ord, L: Borrow<T>, B: RangeBounds<T>,
pub fn range_right<T, B>(&self, range: B) -> Range<'_, R, L>where T: Ord, R: Borrow<T>, B: RangeBounds<T>,
Trait Implementations§
source§impl<L: Clone + Ord, R: Clone + Ord> Clone for BTreeBimap<L, R>
impl<L: Clone + Ord, R: Clone + Ord> Clone for BTreeBimap<L, R>
source§fn clone(&self) -> BTreeBimap<L, R>
fn clone(&self) -> BTreeBimap<L, R>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl<L, R> RefUnwindSafe for BTreeBimap<L, R>where L: RefUnwindSafe, R: RefUnwindSafe,
impl<L, R> Send for BTreeBimap<L, R>where L: Send, R: Send,
impl<L, R> Sync for BTreeBimap<L, R>where L: Sync, R: Sync,
impl<L, R> Unpin for BTreeBimap<L, R>
impl<L, R> UnwindSafe for BTreeBimap<L, R>where L: RefUnwindSafe, R: RefUnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more