diff --git a/src/fenwicktree.rs b/src/fenwicktree.rs index cfcf32a..9ef4b23 100644 --- a/src/fenwicktree.rs +++ b/src/fenwicktree.rs @@ -53,6 +53,14 @@ impl> FenwickTree { }; self.accum(r) - self.accum(l) } + /// Returns the number of elements. + pub fn len(&self) -> usize { + self.n + } + /// Returns if the container is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } } #[cfg(test)] @@ -67,6 +75,10 @@ mod tests { for i in 0..5 { bit.add(i, i as i64 + 1); } + + assert_eq!(bit.len(), 5); + assert!(!bit.is_empty()); + assert_eq!(bit.sum(0..5), 15); assert_eq!(bit.sum(0..4), 10); assert_eq!(bit.sum(1..3), 5); diff --git a/src/lazysegtree.rs b/src/lazysegtree.rs index d430b34..9a65bf4 100644 --- a/src/lazysegtree.rs +++ b/src/lazysegtree.rs @@ -289,6 +289,15 @@ impl LazySegtree { } {} 0 } + + /// Returns the number of elements. + pub fn len(&self) -> usize { + self.n + } + /// Returns if the container is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } } pub struct LazySegtree @@ -381,6 +390,9 @@ mod tests { let mut segtree: LazySegtree = base.clone().into(); check_segtree(&base, &mut segtree); + assert_eq!(segtree.len(), n); + assert!(!segtree.is_empty()); + let mut segtree = LazySegtree::::new(n); let mut internal = vec![i32::min_value(); n]; for i in 0..n { diff --git a/src/segtree.rs b/src/segtree.rs index 573b9ff..0a02dcd 100644 --- a/src/segtree.rs +++ b/src/segtree.rs @@ -233,6 +233,15 @@ impl Segtree { fn update(&mut self, k: usize) { self.d[k] = M::binary_operation(&self.d[2 * k], &self.d[2 * k + 1]); } + + /// Returns the number of elements. + pub fn len(&self) -> usize { + self.n + } + /// Returns if the container is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } } // Maybe we can use this someday @@ -269,6 +278,9 @@ mod tests { let segtree: Segtree> = base.clone().into(); check_segtree(&base, &segtree); + assert_eq!(segtree.len(), n); + assert!(!segtree.is_empty()); + let mut segtree = Segtree::>::new(n); let mut internal = vec![i32::min_value(); n]; for i in 0..n {