pub struct DarySegmentTreeMaxI64 {
levels: Vec<Vec<Block<i64, 8>>>,
len: usize,
backend: SimdBackend,
}Expand description
A cache-line-oriented d-ary point-update segment tree for range maxima over i64.
Fields§
§levels: Vec<Vec<Block<i64, 8>>>§len: usize§backend: SimdBackendImplementations§
Source§impl DarySegmentTreeMaxI64
impl DarySegmentTreeMaxI64
pub fn new(len: usize) -> Self
pub fn from_vec(values: Vec<i64>) -> Self
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn set(&mut self, index: usize, value: i64)
pub fn clear(&mut self, index: usize)
pub fn update(&mut self, index: usize, value: i64)
pub fn get(&self, index: usize) -> i64
pub fn fold<R>(&self, range: R) -> i64where
R: RangeBounds<usize>,
pub fn fold_all(&self) -> i64
fn build(values: Vec<i64>, backend: SimdBackend) -> Self
fn set_value(&mut self, index: usize, value: i64)
fn reduce_scalar(values: &[i64; 8]) -> i64
fn reduce_range_scalar(values: &[i64; 8], start: usize, end: usize) -> i64
fn set_by<F>(&mut self, index: usize, value: i64, reduce: F)
fn fold_by<F>(&self, left: usize, right: usize, reduce: F) -> i64
unsafe fn set_avx2(&mut self, index: usize, value: i64)
unsafe fn fold_avx2(&self, left: usize, right: usize) -> i64
unsafe fn set_avx512(&mut self, index: usize, value: i64)
unsafe fn fold_avx512(&self, left: usize, right: usize) -> i64
Trait Implementations§
Source§impl Clone for DarySegmentTreeMaxI64
impl Clone for DarySegmentTreeMaxI64
Auto Trait Implementations§
impl Freeze for DarySegmentTreeMaxI64
impl RefUnwindSafe for DarySegmentTreeMaxI64
impl Send for DarySegmentTreeMaxI64
impl Sync for DarySegmentTreeMaxI64
impl Unpin for DarySegmentTreeMaxI64
impl UnsafeUnpin for DarySegmentTreeMaxI64
impl UnwindSafe for DarySegmentTreeMaxI64
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