![]()  | 
  
    Vcsn
    2.3
    
   Be Rational 
   | 
 
Sparse Set implementation. More...
#include <sparse-set.hh>
Public Member Functions | |
| sparse_set (size_t max_size=0) | |
| The template parameter corresponds to indexes so it has to be unsigned.  More... | |
| template<template< typename Elt > class Container, typename = decltype(std::declval<Container<T>>().size())> | |
| sparse_set (const Container< T > &cont) | |
| Construct with a container.  More... | |
| void | set_max_size (size_t max_size) | 
| Set current vector size.  More... | |
| bool | emplace (T e) | 
| bool | insert (T e) | 
| Insert new value.  More... | |
| bool | has (T e) const | 
| void | erase (T e) | 
| Erase an element.  More... | |
| void | clear () | 
| Flush all elements from the set.  More... | |
| auto | begin () | 
| auto | end () | 
| auto | begin () const | 
| auto | end () const | 
Private Attributes | |
| std::vector< T > | dense_ | 
| Actual elements of the set, not sorted.  More... | |
| std::vector< T > | sparse_ | 
| Indexes of elements in the dense_ vector.  More... | |
| T | curr_ = 0 | 
| Current number of elements.  More... | |
Sparse Set implementation.
Based on Russ Cox trick allowing constant operations: http://research.swtch.com/sparse
Definition at line 12 of file sparse-set.hh.
      
  | 
  inline | 
The template parameter corresponds to indexes so it has to be unsigned.
Definition at line 19 of file sparse-set.hh.
      
  | 
  inline | 
Construct with a container.
Use size for SFINAE as it is not featured in sparse_set. Hence, this is not a copy-constructor.
Definition at line 32 of file sparse-set.hh.
      
  | 
  inline | 
Definition at line 98 of file sparse-set.hh.
References vcsn::sparse_set< T >::dense_.
      
  | 
  inline | 
Definition at line 108 of file sparse-set.hh.
References vcsn::sparse_set< T >::dense_.
      
  | 
  inline | 
Flush all elements from the set.
Definition at line 93 of file sparse-set.hh.
References vcsn::sparse_set< T >::curr_.
      
  | 
  inline | 
Definition at line 47 of file sparse-set.hh.
References vcsn::sparse_set< T >::insert().
      
  | 
  inline | 
Definition at line 103 of file sparse-set.hh.
References vcsn::sparse_set< T >::curr_, and vcsn::sparse_set< T >::dense_.
      
  | 
  inline | 
Definition at line 113 of file sparse-set.hh.
References vcsn::sparse_set< T >::curr_, and vcsn::sparse_set< T >::dense_.
      
  | 
  inline | 
Erase an element.
Does nothing if the element is not present.
Definition at line 81 of file sparse-set.hh.
References vcsn::sparse_set< T >::curr_, vcsn::sparse_set< T >::dense_, vcsn::sparse_set< T >::has(), and vcsn::sparse_set< T >::sparse_.
      
  | 
  inline | 
Definition at line 71 of file sparse-set.hh.
References vcsn::sparse_set< T >::curr_, vcsn::sparse_set< T >::dense_, and vcsn::sparse_set< T >::sparse_.
Referenced by vcsn::sparse_set< T >::erase(), vcsn::has(), and vcsn::sparse_set< T >::insert().
      
  | 
  inline | 
Insert new value.
Definition at line 56 of file sparse-set.hh.
References vcsn::sparse_set< T >::curr_, vcsn::sparse_set< T >::dense_, vcsn::sparse_set< T >::has(), and vcsn::sparse_set< T >::sparse_.
Referenced by vcsn::sparse_set< T >::emplace().
      
  | 
  inline | 
Set current vector size.
Definition at line 42 of file sparse-set.hh.
References vcsn::sparse_set< T >::sparse_.
      
  | 
  private | 
Current number of elements.
Definition at line 124 of file sparse-set.hh.
Referenced by vcsn::sparse_set< T >::clear(), vcsn::sparse_set< T >::end(), vcsn::sparse_set< T >::erase(), vcsn::sparse_set< T >::has(), and vcsn::sparse_set< T >::insert().
      
  | 
  private | 
Actual elements of the set, not sorted.
Definition at line 120 of file sparse-set.hh.
Referenced by vcsn::sparse_set< T >::begin(), vcsn::sparse_set< T >::end(), vcsn::sparse_set< T >::erase(), vcsn::sparse_set< T >::has(), and vcsn::sparse_set< T >::insert().
      
  | 
  private | 
Indexes of elements in the dense_ vector.
Definition at line 122 of file sparse-set.hh.
Referenced by vcsn::sparse_set< T >::erase(), vcsn::sparse_set< T >::has(), vcsn::sparse_set< T >::insert(), and vcsn::sparse_set< T >::set_max_size().