Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst > Class Template Reference

Random-access proxy iterator over (key, value) entries. More...

#include <tpl_flat_map.H>

Classes

struct  pointer
 Proxy returned by operator->, keeps the reference alive. More...
 
struct  reference
 Proxy returned by operator*: references into the parallel arrays. More...
 

Public Types

using iterator_category = std::random_access_iterator_tag
 Category.
 
using value_type = std::pair< Key, T >
 Materialized entry type.
 
using difference_type = std::ptrdiff_t
 Signed distance type.
 

Public Member Functions

 basic_iterator ()=default
 Construct a singular iterator.
 
 basic_iterator (const Key *k, VPtr v) noexcept
 Construct from parallel key/value cursors (internal use).
 
template<bool B>
requires (IsConst and not B)
 basic_iterator (const basic_iterator< B > &it) noexcept
 Convert a mutable iterator into a const iterator.
 
const Key * key_ptr () const noexcept
 Cursor into the key array (internal use).
 
VPtr val_ptr () const noexcept
 Cursor into the value array (internal use).
 
reference operator* () const noexcept
 Dereference to the (key, value) proxy.
 
pointer operator-> () const noexcept
 Member access through the proxy (e.g. it->second).
 
reference operator[] (difference_type i) const noexcept
 Proxy for the entry i positions away.
 
basic_iterator & operator++ () noexcept
 Pre-increment.
 
basic_iterator operator++ (int) noexcept
 Post-increment.
 
basic_iterator & operator-- () noexcept
 Pre-decrement.
 
basic_iterator operator-- (int) noexcept
 Post-decrement.
 
basic_iterator & operator+= (difference_type i) noexcept
 Advance by i positions.
 
basic_iterator & operator-= (difference_type i) noexcept
 Retreat by i positions.
 
basic_iterator operator+ (difference_type i) const noexcept
 Iterator i positions forward.
 
basic_iterator operator- (difference_type i) const noexcept
 Iterator i positions backward.
 
difference_type operator- (const basic_iterator &it) const noexcept
 Signed distance between iterators.
 
bool operator== (const basic_iterator &it) const noexcept
 Equality: same position.
 
bool operator!= (const basic_iterator &it) const noexcept
 Inequality: different position.
 
bool operator< (const basic_iterator &it) const noexcept
 Strict ordering by position.
 
bool operator<= (const basic_iterator &it) const noexcept
 Ordering by position.
 
bool operator> (const basic_iterator &it) const noexcept
 Strict ordering by position.
 
bool operator>= (const basic_iterator &it) const noexcept
 Ordering by position.
 

Private Types

using VPtr = std::conditional_t< IsConst, const T *, T * >
 

Private Attributes

const Key * k_ = nullptr
 
VPtr v_ = nullptr
 

Detailed Description

template<typename Key, typename T, class Compare = Aleph::less<Key>>
template<bool IsConst>
class Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >

Random-access proxy iterator over (key, value) entries.

Dereferencing yields a proxy with public members first (const Key &) and second (T & when IsConst == false, const T & otherwise), matching the access model of C++23 std::flat_map. The proxy is a value: bind it with auto, not auto & (e.g. for (auto [k, v] : m)).

Template Parameters
IsConstWhether the iterator provides const access to values.

Definition at line 272 of file tpl_flat_map.H.

Member Typedef Documentation

◆ difference_type

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
using Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::difference_type = std::ptrdiff_t

Signed distance type.

Definition at line 300 of file tpl_flat_map.H.

◆ iterator_category

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
using Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::iterator_category = std::random_access_iterator_tag

Category.

Definition at line 298 of file tpl_flat_map.H.

◆ value_type

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
using Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::value_type = std::pair<Key, T>

Materialized entry type.

Definition at line 299 of file tpl_flat_map.H.

◆ VPtr

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
using Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::VPtr = std::conditional_t<IsConst, const T *, T *>
private

Definition at line 274 of file tpl_flat_map.H.

Constructor & Destructor Documentation

◆ basic_iterator() [1/3]

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::basic_iterator ( )
default

Construct a singular iterator.

◆ basic_iterator() [2/3]

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::basic_iterator ( const Key *  k,
VPtr  v 
)
inlinenoexcept

Construct from parallel key/value cursors (internal use).

Definition at line 306 of file tpl_flat_map.H.

◆ basic_iterator() [3/3]

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
template<bool B>
requires (IsConst and not B)
Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::basic_iterator ( const basic_iterator< B > &  it)
inlinenoexcept

Convert a mutable iterator into a const iterator.

Definition at line 310 of file tpl_flat_map.H.

Member Function Documentation

◆ key_ptr()

◆ operator!=()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
bool Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator!= ( const basic_iterator< IsConst > &  it) const
inlinenoexcept

◆ operator*()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
reference Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator* ( ) const
inlinenoexcept

◆ operator+()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
basic_iterator Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator+ ( difference_type  i) const
inlinenoexcept

Iterator i positions forward.

Definition at line 390 of file tpl_flat_map.H.

References Aleph::blossom_maximum_cardinality_matching().

◆ operator++() [1/2]

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
basic_iterator & Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator++ ( )
inlinenoexcept

◆ operator++() [2/2]

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
basic_iterator Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator++ ( int  )
inlinenoexcept

Post-increment.

Definition at line 352 of file tpl_flat_map.H.

References Aleph::blossom_maximum_cardinality_matching().

◆ operator+=()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
basic_iterator & Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator+= ( difference_type  i)
inlinenoexcept

◆ operator-() [1/2]

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
difference_type Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator- ( const basic_iterator< IsConst > &  it) const
inlinenoexcept

◆ operator-() [2/2]

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
basic_iterator Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator- ( difference_type  i) const
inlinenoexcept

Iterator i positions backward.

Definition at line 397 of file tpl_flat_map.H.

References Aleph::blossom_maximum_cardinality_matching().

◆ operator--() [1/2]

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
basic_iterator & Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator-- ( )
inlinenoexcept

◆ operator--() [2/2]

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
basic_iterator Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator-- ( int  )
inlinenoexcept

Post-decrement.

Definition at line 368 of file tpl_flat_map.H.

References Aleph::blossom_maximum_cardinality_matching().

◆ operator-=()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
basic_iterator & Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator-= ( difference_type  i)
inlinenoexcept

Retreat by i positions.

Definition at line 384 of file tpl_flat_map.H.

◆ operator->()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
pointer Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator-> ( ) const
inlinenoexcept

Member access through the proxy (e.g. it->second).

Definition at line 332 of file tpl_flat_map.H.

References Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::k_, and Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::v_.

◆ operator<()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
bool Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator< ( const basic_iterator< IsConst > &  it) const
inlinenoexcept

◆ operator<=()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
bool Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator<= ( const basic_iterator< IsConst > &  it) const
inlinenoexcept

◆ operator==()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
bool Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator== ( const basic_iterator< IsConst > &  it) const
inlinenoexcept

◆ operator>()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
bool Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator> ( const basic_iterator< IsConst > &  it) const
inlinenoexcept

◆ operator>=()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
bool Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator>= ( const basic_iterator< IsConst > &  it) const
inlinenoexcept

◆ operator[]()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
reference Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::operator[] ( difference_type  i) const
inlinenoexcept

◆ val_ptr()

template<typename Key , typename T , class Compare = Aleph::less<Key>>
template<bool IsConst>
VPtr Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::val_ptr ( ) const
inlinenoexcept

Cursor into the value array (internal use).

Definition at line 320 of file tpl_flat_map.H.

References Aleph::FlatMap< Key, T, Compare >::basic_iterator< IsConst >::v_.

Member Data Documentation

◆ k_

◆ v_


The documentation for this class was generated from the following file: