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