Spatial C++ Library
Generic Multi-Dimensional Containers and Spatial Operations
spatial::idle_box_multiset< Rank, Key, Compare, Alloc > Class Template Reference

Non-associative containers that and store values in space that can be represented as boxes. More...

#include <idle_box_multiset.hpp>

Inherits spatial::details::Kdtree< details::Static_rank< Rank >, const Key, const Key, Compare, Alloc >.

Public Member Functions

 idle_box_multiset ()
 
 idle_box_multiset (const Compare &compare)
 
 idle_box_multiset (const Compare &compare, const Alloc &alloc)
 
 idle_box_multiset (const idle_box_multiset &other, bool balancing=false)
 
idle_box_multisetoperator= (const idle_box_multiset &other)
 
- Public Member Functions inherited from spatial::details::Kdtree< details::Static_rank< Rank >, const Key, const Key, Compare, Alloc >
iterator begin ()
 
const_iterator begin () const
 
const_iterator cbegin () const
 
iterator end ()
 
const_iterator end () const
 
const_iterator cend () const
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const
 
const_reverse_iterator crbegin () const
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const
 
const_reverse_iterator crend () const
 
rank_type rank () const
 Returns the rank used to create the tree. More...
 
dimension_type dimension () const
 Returns the dimension of the tree. More...
 
key_compare key_comp () const
 Returns the compare function used for the key. More...
 
value_compare value_comp () const
 Returns the compare function used for the value. More...
 
allocator_type get_allocator () const
 Returns the allocator used by the tree. More...
 
bool empty () const
 True if the tree is empty. More...
 
size_type size () const
 Returns the number of elements in the K-d tree. More...
 
size_type count () const
 Returns the number of elements in the K-d tree. More...
 
void clear ()
 Erase all elements in the K-d tree. More...
 
size_type max_size () const
 The maximum number of elements that can be allocated. More...
 
 Kdtree ()
 
 Kdtree (const rank_type &rank_)
 
 Kdtree (const key_compare &compare_)
 
 Kdtree (const rank_type &rank_, const key_compare &compare_)
 
 Kdtree (const rank_type &rank_, const key_compare &compare_, const allocator_type &allocator_)
 
 Kdtree (const Self &other, bool balancing=false)
 Deep copy of other into the new tree. More...
 
Selfoperator= (const Self &other)
 Assignment of other into the tree, with deep copy. More...
 
 ~Kdtree ()
 Deallocate all nodes in the destructor. More...
 
void swap (Self &other)
 Swap the K-d tree content with others. More...
 
void rebalance ()
 Rebalance the k-d tree near-optimally, resulting in $O(\log n)\,$ order of complexity on most search functions. More...
 
iterator insert (const value_type &value)
 Insert a single value element in the container. More...
 
void insert (InputIterator first, InputIterator last)
 Insert a serie of values in the container at once. More...
 
void insert_rebalance (InputIterator first, InputIterator last)
 Insert a serie of values in the container at once and rebalance the container after insertion. More...
 
void erase (iterator pointer)
 Deletes the node pointed to by the iterator. More...
 
size_type erase (const key_type &value)
 Deletes all nodes that match key value. More...
 
iterator find (const key_type &key)
 Find the first node that matches with key and returns an iterator to it found, otherwise it returns an iterator to the element past the end of the container. More...
 
const_iterator find (const key_type &key) const
 Find the first node that matches with key and returns an iterator to it found, otherwise it returns an iterator to the element past the end of the container. More...
 

Private Types

typedef enable_if_c<(Rank &1u)==0 >::type check_concept_dimension_is_even
 
typedef details::Kdtree< details::Static_rank< Rank >, const Key, const Key, Compare, Alloc > base_type
 
typedef idle_box_multiset< Rank, Key, Compare, Alloc > Self
 

Additional Inherited Members

- Public Types inherited from spatial::details::Kdtree< details::Static_rank< Rank >, const Key, const Key, Compare, Alloc >
typedef details::Static_rank< Rank > rank_type
 
typedef mutate< const Key >::type key_type
 
typedef mutate< const Key >::type value_type
 
typedef Compare key_compare
 
typedef ValueCompare< value_type, key_comparevalue_compare
 
typedef Alloc allocator_type
 
typedef Kdtree_link< const Key, const Key > mode_type
 
typedef const Key * pointer
 
typedef const const Key * const_pointer
 
typedef const Key & reference
 
typedef const const Key & const_reference
 
typedef std::size_t size_type
 
typedef std::ptrdiff_t difference_type
 
typedef Node_iterator< mode_typeiterator
 
typedef Const_node_iterator< mode_typeconst_iterator
 
typedef std::reverse_iterator< iteratorreverse_iterator
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 

Detailed Description

template<dimension_type Rank, typename Key, typename Compare = bracket_less<Key>, typename Alloc = std::allocator<Key>>
class spatial::idle_box_multiset< Rank, Key, Compare, Alloc >

Non-associative containers that and store values in space that can be represented as boxes.

Iterating these containers always yield a constant value iterator. That is because modifying the value stored in the container may compromise the ordering in the container. One way around this issue is to use a spatial::idle_box_multimap container or to const_cast the value dereferenced from the iterator.

Definition at line 36 of file idle_box_multiset.hpp.

Member Typedef Documentation

template<dimension_type Rank, typename Key , typename Compare = bracket_less<Key>, typename Alloc = std::allocator<Key>>
typedef details::Kdtree<details::Static_rank<Rank>, const Key, const Key, Compare, Alloc> spatial::idle_box_multiset< Rank, Key, Compare, Alloc >::base_type
private

Definition at line 45 of file idle_box_multiset.hpp.

template<dimension_type Rank, typename Key , typename Compare = bracket_less<Key>, typename Alloc = std::allocator<Key>>
typedef enable_if_c<(Rank & 1u) == 0>::type spatial::idle_box_multiset< Rank, Key, Compare, Alloc >::check_concept_dimension_is_even
private

Definition at line 42 of file idle_box_multiset.hpp.

template<dimension_type Rank, typename Key , typename Compare = bracket_less<Key>, typename Alloc = std::allocator<Key>>
typedef idle_box_multiset<Rank, Key, Compare, Alloc> spatial::idle_box_multiset< Rank, Key, Compare, Alloc >::Self
private

Definition at line 46 of file idle_box_multiset.hpp.

Constructor & Destructor Documentation

template<dimension_type Rank, typename Key , typename Compare = bracket_less<Key>, typename Alloc = std::allocator<Key>>
spatial::idle_box_multiset< Rank, Key, Compare, Alloc >::idle_box_multiset ( )

Definition at line 49 of file idle_box_multiset.hpp.

template<dimension_type Rank, typename Key , typename Compare = bracket_less<Key>, typename Alloc = std::allocator<Key>>
spatial::idle_box_multiset< Rank, Key, Compare, Alloc >::idle_box_multiset ( const Compare &  compare)
explicit

Definition at line 51 of file idle_box_multiset.hpp.

template<dimension_type Rank, typename Key , typename Compare = bracket_less<Key>, typename Alloc = std::allocator<Key>>
spatial::idle_box_multiset< Rank, Key, Compare, Alloc >::idle_box_multiset ( const Compare &  compare,
const Alloc &  alloc 
)

Definition at line 55 of file idle_box_multiset.hpp.

template<dimension_type Rank, typename Key , typename Compare = bracket_less<Key>, typename Alloc = std::allocator<Key>>
spatial::idle_box_multiset< Rank, Key, Compare, Alloc >::idle_box_multiset ( const idle_box_multiset< Rank, Key, Compare, Alloc > &  other,
bool  balancing = false 
)

Definition at line 59 of file idle_box_multiset.hpp.

Member Function Documentation

template<dimension_type Rank, typename Key , typename Compare = bracket_less<Key>, typename Alloc = std::allocator<Key>>
idle_box_multiset& spatial::idle_box_multiset< Rank, Key, Compare, Alloc >::operator= ( const idle_box_multiset< Rank, Key, Compare, Alloc > &  other)

Definition at line 64 of file idle_box_multiset.hpp.


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