Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder > Class Template Reference

The class template list is an intrusive container that mimics most of the interface of std::list as described in the C++ standard. More...

#include <list.hpp>

Public Types

typedef ValueTraits value_traits
 
typedef value_traits::pointer pointer
 
typedef value_traits::const_pointer const_pointer
 
typedef pointer_traits
< pointer >::element_type 
value_type
 
typedef pointer_traits
< pointer >::reference 
reference
 
typedef pointer_traits
< const_pointer >::reference 
const_reference
 
typedef pointer_traits
< pointer >::difference_type 
difference_type
 
typedef SizeType size_type
 
typedef list_iterator
< value_traits, false > 
iterator
 
typedef list_iterator
< value_traits, true > 
const_iterator
 
typedef
boost::intrusive::detail::reverse_iterator
< iterator
reverse_iterator
 
typedef
boost::intrusive::detail::reverse_iterator
< const_iterator
const_reverse_iterator
 
typedef value_traits::node_traits node_traits
 
typedef node_traits::node node
 
typedef node_traits::node_ptr node_ptr
 
typedef node_traits::const_node_ptr const_node_ptr
 
typedef
circular_list_algorithms
< node_traits
node_algorithms
 
typedef HeaderHolder header_holder_type
 

Public Member Functions

 list_impl (const value_traits &v_traits=value_traits())
 Effects: constructs an empty list. More...
 
template<class Iterator >
 list_impl (Iterator b, Iterator e, const value_traits &v_traits=value_traits())
 Requires: Dereferencing iterator must yield an lvalue of type value_type. More...
 
 list_impl (BOOST_RV_REF(list_impl) x)
 Effects: to-do More...
 
list_imploperator= (BOOST_RV_REF(list_impl) x)
 Effects: to-do More...
 
 ~list_impl ()
 Effects: If it's not a safe-mode or an auto-unlink value_type the destructor does nothing (ie. More...
 
void push_back (reference value)
 Requires: value must be an lvalue. More...
 
void push_front (reference value)
 Requires: value must be an lvalue. More...
 
void pop_back ()
 Effects: Erases the last element of the list. More...
 
template<class Disposer >
void pop_back_and_dispose (Disposer disposer)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
void pop_front ()
 Effects: Erases the first element of the list. More...
 
template<class Disposer >
void pop_front_and_dispose (Disposer disposer)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
reference front ()
 Effects: Returns a reference to the first element of the list. More...
 
const_reference front () const
 Effects: Returns a const_reference to the first element of the list. More...
 
reference back ()
 Effects: Returns a reference to the last element of the list. More...
 
const_reference back () const
 Effects: Returns a const_reference to the last element of the list. More...
 
iterator begin ()
 Effects: Returns an iterator to the first element contained in the list. More...
 
const_iterator begin () const
 Effects: Returns a const_iterator to the first element contained in the list. More...
 
const_iterator cbegin () const
 Effects: Returns a const_iterator to the first element contained in the list. More...
 
iterator end ()
 Effects: Returns an iterator to the end of the list. More...
 
const_iterator end () const
 Effects: Returns a const_iterator to the end of the list. More...
 
const_iterator cend () const
 Effects: Returns a constant iterator to the end of the list. More...
 
reverse_iterator rbegin ()
 Effects: Returns a reverse_iterator pointing to the beginning of the reversed list. More...
 
const_reverse_iterator rbegin () const
 Effects: Returns a const_reverse_iterator pointing to the beginning of the reversed list. More...
 
const_reverse_iterator crbegin () const
 Effects: Returns a const_reverse_iterator pointing to the beginning of the reversed list. More...
 
reverse_iterator rend ()
 Effects: Returns a reverse_iterator pointing to the end of the reversed list. More...
 
const_reverse_iterator rend () const
 Effects: Returns a const_reverse_iterator pointing to the end of the reversed list. More...
 
const_reverse_iterator crend () const
 Effects: Returns a const_reverse_iterator pointing to the end of the reversed list. More...
 
size_type size () const
 Effects: Returns the number of the elements contained in the list. More...
 
bool empty () const
 Effects: Returns true if the list contains no elements. More...
 
void swap (list_impl &other)
 Effects: Swaps the elements of x and *this. More...
 
void shift_backwards (size_type n=1)
 Effects: Moves backwards all the elements, so that the first element becomes the second, the second becomes the third... More...
 
void shift_forward (size_type n=1)
 Effects: Moves forward all the elements, so that the second element becomes the first, the third becomes the second... More...
 
iterator erase (const_iterator i)
 Effects: Erases the element pointed by i of the list. More...
 
iterator erase (const_iterator b, const_iterator e)
 Requires: b and e must be valid iterators to elements in *this. More...
 
iterator erase (const_iterator b, const_iterator e, size_type n)
 Requires: b and e must be valid iterators to elements in *this. More...
 
template<class Disposer >
iterator erase_and_dispose (const_iterator i, Disposer disposer)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
template<class Disposer >
iterator erase_and_dispose (iterator i, Disposer disposer)
 
template<class Disposer >
iterator erase_and_dispose (const_iterator b, const_iterator e, Disposer disposer)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
void clear ()
 Effects: Erases all the elements of the container. More...
 
template<class Disposer >
void clear_and_dispose (Disposer disposer)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
template<class Cloner , class Disposer >
void clone_from (const list_impl &src, Cloner cloner, Disposer disposer)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
iterator insert (const_iterator p, reference value)
 Requires: value must be an lvalue and p must be a valid iterator of *this. More...
 
template<class Iterator >
void insert (const_iterator p, Iterator b, Iterator e)
 Requires: Dereferencing iterator must yield an lvalue of type value_type and p must be a valid iterator of *this. More...
 
template<class Iterator >
void assign (Iterator b, Iterator e)
 Requires: Dereferencing iterator must yield an lvalue of type value_type. More...
 
template<class Iterator , class Disposer >
void dispose_and_assign (Disposer disposer, Iterator b, Iterator e)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
void splice (const_iterator p, list_impl &x)
 Requires: p must be a valid iterator of *this. More...
 
void splice (const_iterator p, list_impl &x, const_iterator new_ele)
 Requires: p must be a valid iterator of *this. More...
 
void splice (const_iterator p, list_impl &x, const_iterator f, const_iterator e)
 Requires: p must be a valid iterator of *this. More...
 
void splice (const_iterator p, list_impl &x, const_iterator f, const_iterator e, size_type n)
 Requires: p must be a valid iterator of *this. More...
 
void sort ()
 Effects: This function sorts the list *this according to std::less<value_type>. More...
 
template<class Predicate >
void sort (Predicate p)
 Requires: p must be a comparison function that induces a strict weak ordering More...
 
void merge (list_impl &x)
 Effects: This function removes all of x's elements and inserts them in order into *this according to std::less<value_type>. More...
 
template<class Predicate >
void merge (list_impl &x, Predicate p)
 Requires: p must be a comparison function that induces a strict weak ordering and both *this and x must be sorted according to that ordering The lists x and *this must be distinct. More...
 
void reverse ()
 Effects: Reverses the order of elements in the list. More...
 
void remove (const_reference value)
 Effects: Removes all the elements that compare equal to value. More...
 
template<class Disposer >
void remove_and_dispose (const_reference value, Disposer disposer)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
template<class Pred >
void remove_if (Pred pred)
 Effects: Removes all the elements for which a specified predicate is satisfied. More...
 
template<class Pred , class Disposer >
void remove_and_dispose_if (Pred pred, Disposer disposer)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
void unique ()
 Effects: Removes adjacent duplicate elements or adjacent elements that are equal from the list. More...
 
template<class BinaryPredicate >
void unique (BinaryPredicate pred)
 Effects: Removes adjacent duplicate elements or adjacent elements that satisfy some binary predicate from the list. More...
 
template<class Disposer >
void unique_and_dispose (Disposer disposer)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
template<class BinaryPredicate , class Disposer >
void unique_and_dispose (BinaryPredicate pred, Disposer disposer)
 Requires: Disposer::operator()(pointer) shouldn't throw. More...
 
iterator iterator_to (reference value)
 Requires: value must be a reference to a value inserted in a list. More...
 
const_iterator iterator_to (const_reference value) const
 Requires: value must be a const reference to a value inserted in a list. More...
 
void check () const
 Effects: Asserts the integrity of the container. More...
 

Static Public Member Functions

static list_implcontainer_from_end_iterator (iterator end_iterator)
 Precondition: end_iterator must be a valid end iterator of list. More...
 
static const list_implcontainer_from_end_iterator (const_iterator end_iterator)
 Precondition: end_iterator must be a valid end const_iterator of list. More...
 
static iterator s_iterator_to (reference value)
 Requires: value must be a reference to a value inserted in a list. More...
 
static const_iterator s_iterator_to (const_reference value)
 Requires: value must be a const reference to a value inserted in a list. More...
 

Static Public Attributes

static const bool constant_time_size = ConstantTimeSize
 
static const bool stateful_value_traits = detail::is_stateful_value_traits<value_traits>::value
 
static const bool has_container_from_iterator
 

Detailed Description

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
class boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >

The class template list is an intrusive container that mimics most of the interface of std::list as described in the C++ standard.

The template parameter T is the type to be managed by the container. The user can specify additional options and if no options are provided default options are used.

The container supports the following options: base_hook<>/member_hook<>/value_traits<>, constant_time_size<> and size_type<>.

Member Typedef Documentation

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef list_iterator<value_traits, true> boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::const_iterator
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef node_traits::const_node_ptr boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::const_node_ptr
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef value_traits::const_pointer boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::const_pointer
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef pointer_traits<const_pointer>::reference boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::const_reference
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef boost::intrusive::detail::reverse_iterator<const_iterator> boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::const_reverse_iterator
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef pointer_traits<pointer>::difference_type boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::difference_type
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef HeaderHolder boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::header_holder_type
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef list_iterator<value_traits, false> boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::iterator
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef node_traits::node boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::node
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef circular_list_algorithms<node_traits> boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::node_algorithms
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef node_traits::node_ptr boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::node_ptr
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef value_traits::node_traits boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::node_traits
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef value_traits::pointer boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::pointer
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef pointer_traits<pointer>::reference boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::reference
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef boost::intrusive::detail::reverse_iterator<iterator> boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::reverse_iterator
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef SizeType boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::size_type
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef ValueTraits boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::value_traits
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
typedef pointer_traits<pointer>::element_type boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::value_type

Constructor & Destructor Documentation

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::list_impl ( const value_traits v_traits = value_traits())
inlineexplicit

Effects: constructs an empty list.

Complexity: Constant

Throws: If value_traits::node_traits::node constructor throws (this does not happen with predefined Boost.Intrusive hooks).

References boost::intrusive::circular_list_algorithms< NodeTraits >::init_header().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Iterator >
boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::list_impl ( Iterator  b,
Iterator  e,
const value_traits v_traits = value_traits() 
)
inline

Requires: Dereferencing iterator must yield an lvalue of type value_type.

Effects: Constructs a list equal to the range [first,last).

Complexity: Linear in std::distance(b, e). No copy constructors are called.

Throws: If value_traits::node_traits::node constructor throws (this does not happen with predefined Boost.Intrusive hooks).

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cend(), boost::intrusive::circular_list_algorithms< NodeTraits >::init_header(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::insert().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::list_impl ( BOOST_RV_REF(list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >)  x)
inline
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::~list_impl ( )
inline

Effects: If it's not a safe-mode or an auto-unlink value_type the destructor does nothing (ie.

no code is generated). Otherwise it detaches all elements from this. In this case the objects in the list are not deleted (i.e. no destructors are called), but the hooks according to the ValueTraits template parameter are set to their default value.

Complexity: Linear to the number of elements in the list, if it's a safe-mode or auto-unlink value . Otherwise constant.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::clear(), and boost::intrusive::circular_list_algorithms< NodeTraits >::init().

Member Function Documentation

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Iterator >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::assign ( Iterator  b,
Iterator  e 
)
inline

Requires: Dereferencing iterator must yield an lvalue of type value_type.

Effects: Clears the list and inserts the range pointed by b and e. No destructors or copy constructors are called.

Throws: Nothing.

Complexity: Linear to the number of elements inserted plus linear to the elements contained in the list if it's a safe-mode or auto-unlink value. Linear to the number of elements inserted in the list otherwise.

Note: Invalidates the iterators (but not the references) to the erased elements.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cend(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::clear(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::insert().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
reference boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::back ( )
inline

Effects: Returns a reference to the last element of the list.

Throws: Nothing.

Complexity: Constant.

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const_reference boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::back ( ) const
inline

Effects: Returns a const_reference to the last element of the list.

Throws: Nothing.

Complexity: Constant.

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::begin ( void  ) const
inline

Effects: Returns a const_iterator to the first element contained in the list.

Throws: Nothing.

Complexity: Constant.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cbegin().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cbegin ( ) const
inline
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::check ( ) const
inline

Effects: Asserts the integrity of the container.

Complexity: Linear time.

Note: The method has no effect when asserts are turned off (e.g., with NDEBUG). Experimental function, interface might change in future versions.

References boost::multiprecision::backends::p.

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::clear ( void  )
inline

Effects: Erases all the elements of the container.

No destructors are called.

Throws: Nothing.

Complexity: Linear to the number of elements of the list. if it's a safe-mode or auto-unlink value_type. Constant time otherwise.

Note: Invalidates the iterators (but not the references) to the erased elements.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::clear_and_dispose(), and boost::intrusive::circular_list_algorithms< NodeTraits >::init_header().

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::assign(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::~list_impl().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Disposer >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::clear_and_dispose ( Disposer  disposer)
inline
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Cloner , class Disposer >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::clone_from ( const list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder > &  src,
Cloner  cloner,
Disposer  disposer 
)
inline

Requires: Disposer::operator()(pointer) shouldn't throw.

Cloner should yield to nodes equivalent to the original nodes.

Effects: Erases all the elements from *this calling Disposer::operator()(pointer), clones all the elements from src calling Cloner::operator()(const_reference ) and inserts them on *this.

If cloner throws, all cloned elements are unlinked and disposed calling Disposer::operator()(pointer).

Complexity: Linear to erased plus inserted elements.

Throws: If cloner throws. Basic guarantee.

References boost::asio::b, boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::begin(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::clear_and_dispose(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::end(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::push_back().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
static list_impl& boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::container_from_end_iterator ( iterator  end_iterator)
inlinestatic

Precondition: end_iterator must be a valid end iterator of list.

Effects: Returns a const reference to the list associated to the end iterator

Throws: Nothing.

Complexity: Constant.

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
static const list_impl& boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::container_from_end_iterator ( const_iterator  end_iterator)
inlinestatic

Precondition: end_iterator must be a valid end const_iterator of list.

Effects: Returns a const reference to the list associated to the end iterator

Throws: Nothing.

Complexity: Constant.

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const_reverse_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::crbegin ( ) const
inline

Effects: Returns a const_reverse_iterator pointing to the beginning of the reversed list.

Throws: Nothing.

Complexity: Constant.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::end().

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::rbegin().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const_reverse_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::crend ( ) const
inline

Effects: Returns a const_reverse_iterator pointing to the end of the reversed list.

Throws: Nothing.

Complexity: Constant.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::begin().

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::rend().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Iterator , class Disposer >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::dispose_and_assign ( Disposer  disposer,
Iterator  b,
Iterator  e 
)
inline

Requires: Disposer::operator()(pointer) shouldn't throw.

Requires: Dereferencing iterator must yield an lvalue of type value_type.

Effects: Clears the list and inserts the range pointed by b and e. No destructors or copy constructors are called. Disposer::operator()(pointer) is called for the removed elements.

Throws: Nothing.

Complexity: Linear to the number of elements inserted plus linear to the elements contained in the list.

Note: Invalidates the iterators (but not the references) to the erased elements.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cend(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::clear_and_dispose(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::insert().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
bool boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::empty ( void  ) const
inline
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::end ( void  ) const
inline

Effects: Returns a const_iterator to the end of the list.

Throws: Nothing.

Complexity: Constant.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cend().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase ( const_iterator  i)
inline

Effects: Erases the element pointed by i of the list.

No destructors are called.

Returns: the first element remaining beyond the removed element, or end() if no such element exists.

Throws: Nothing.

Complexity: Constant.

Note: Invalidates the iterators (but not the references) to the erased element.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase_and_dispose().

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::remove_if().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase ( const_iterator  b,
const_iterator  e 
)
inline

Requires: b and e must be valid iterators to elements in *this.

Effects: Erases the element range pointed by b and e No destructors are called.

Returns: the first element remaining beyond the removed elements, or end() if no such element exists.

Throws: Nothing.

Complexity: Linear to the number of erased elements if it's a safe-mode or auto-unlink value, or constant-time size is enabled. Constant-time otherwise.

Note: Invalidates the iterators (but not the references) to the erased elements.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase_and_dispose(), and boost::intrusive::circular_list_algorithms< NodeTraits >::unlink().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase ( const_iterator  b,
const_iterator  e,
size_type  n 
)
inline

Requires: b and e must be valid iterators to elements in *this.

n must be std::distance(b, e).

Effects: Erases the element range pointed by b and e No destructors are called.

Returns: the first element remaining beyond the removed elements, or end() if no such element exists.

Throws: Nothing.

Complexity: Linear to the number of erased elements if it's a safe-mode or auto-unlink value is enabled. Constant-time otherwise.

Note: Invalidates the iterators (but not the references) to the erased elements.

References boost::intrusive::circular_list_algorithms< NodeTraits >::distance(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase_and_dispose(), and boost::intrusive::circular_list_algorithms< NodeTraits >::unlink().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Disposer >
iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase_and_dispose ( const_iterator  i,
Disposer  disposer 
)
inline

Requires: Disposer::operator()(pointer) shouldn't throw.

Effects: Erases the element pointed by i of the list. No destructors are called. Disposer::operator()(pointer) is called for the removed element.

Returns: the first element remaining beyond the removed element, or end() if no such element exists.

Throws: Nothing.

Complexity: Constant.

Note: Invalidates the iterators to the erased element.

References boost::multiprecision::backends::i, boost::intrusive::circular_list_algorithms< NodeTraits >::init(), and boost::intrusive::circular_list_algorithms< NodeTraits >::unlink().

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase_and_dispose(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::remove_and_dispose_if(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::unique_and_dispose().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Disposer >
iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase_and_dispose ( iterator  i,
Disposer  disposer 
)
inline
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Disposer >
iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase_and_dispose ( const_iterator  b,
const_iterator  e,
Disposer  disposer 
)
inline

Requires: Disposer::operator()(pointer) shouldn't throw.

Effects: Erases the element range pointed by b and e No destructors are called. Disposer::operator()(pointer) is called for the removed elements.

Returns: the first element remaining beyond the removed elements, or end() if no such element exists.

Throws: Nothing.

Complexity: Linear to the number of elements erased.

Note: Invalidates the iterators to the erased elements.

References boost::intrusive::circular_list_algorithms< NodeTraits >::init(), and boost::intrusive::circular_list_algorithms< NodeTraits >::unlink().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
reference boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::front ( )
inline

Effects: Returns a reference to the first element of the list.

Throws: Nothing.

Complexity: Constant.

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const_reference boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::front ( ) const
inline

Effects: Returns a const_reference to the first element of the list.

Throws: Nothing.

Complexity: Constant.

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::insert ( const_iterator  p,
reference  value 
)
inline

Requires: value must be an lvalue and p must be a valid iterator of *this.

Effects: Inserts the value before the position pointed by p.

Returns: An iterator to the inserted element.

Throws: Nothing.

Complexity: Constant time. No copy constructors are called.

Note: Does not affect the validity of iterators and references.

References boost::intrusive::circular_list_algorithms< NodeTraits >::inited(), and boost::intrusive::circular_list_algorithms< NodeTraits >::link_before().

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::assign(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::dispose_and_assign(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::insert(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::list_impl().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Iterator >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::insert ( const_iterator  p,
Iterator  b,
Iterator  e 
)
inline

Requires: Dereferencing iterator must yield an lvalue of type value_type and p must be a valid iterator of *this.

Effects: Inserts the range pointed by b and e before the position p. No copy constructors are called.

Throws: Nothing.

Complexity: Linear to the number of elements inserted.

Note: Does not affect the validity of iterators and references.

References boost::asio::b, and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::insert().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::iterator_to ( reference  value)
inline

Requires: value must be a reference to a value inserted in a list.

Effects: This function returns a const_iterator pointing to the element

Throws: Nothing.

Complexity: Constant time.

Note: Iterators and references are not invalidated.

References boost::intrusive::circular_list_algorithms< NodeTraits >::inited().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::iterator_to ( const_reference  value) const
inline

Requires: value must be a const reference to a value inserted in a list.

Effects: This function returns an iterator pointing to the element.

Throws: Nothing.

Complexity: Constant time.

Note: Iterators and references are not invalidated.

References boost::intrusive::pointer_traits< Ptr >::const_cast_from(), and boost::intrusive::circular_list_algorithms< NodeTraits >::inited().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::merge ( list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder > &  x)
inline

Effects: This function removes all of x's elements and inserts them in order into *this according to std::less<value_type>.

The merge is stable; that is, if an element from *this is equivalent to one from x, then the element from *this will precede the one from x.

Throws: If std::less<value_type> throws. Basic guarantee.

Complexity: This function is linear time: it performs at most size() + x.size() - 1 comparisons.

Note: Iterators and references are not invalidated

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::sort().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Predicate >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::merge ( list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder > &  x,
Predicate  p 
)
inline

Requires: p must be a comparison function that induces a strict weak ordering and both *this and x must be sorted according to that ordering The lists x and *this must be distinct.

Effects: This function removes all of x's elements and inserts them in order into *this. The merge is stable; that is, if an element from *this is equivalent to one from x, then the element from *this will precede the one from x.

Throws: If the predicate throws. Basic guarantee.

Complexity: This function is linear time: it performs at most size() + x.size() - 1 comparisons.

Note: Iterators and references are not invalidated.

References boost::asio::b, boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::begin(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cbegin(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cend(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::empty(), boost::n, boost::multiprecision::backends::p, and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::splice().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
list_impl& boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::operator= ( BOOST_RV_REF(list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >)  x)
inline
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::pop_back ( )
inline

Effects: Erases the last element of the list.

No destructors are called.

Throws: Nothing.

Complexity: Constant.

Note: Invalidates the iterators (but not the references) to the erased element.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::pop_back_and_dispose().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Disposer >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::pop_back_and_dispose ( Disposer  disposer)
inline

Requires: Disposer::operator()(pointer) shouldn't throw.

Effects: Erases the last element of the list. No destructors are called. Disposer::operator()(pointer) is called for the removed element.

Throws: Nothing.

Complexity: Constant.

Note: Invalidates the iterators to the erased element.

References boost::intrusive::circular_list_algorithms< NodeTraits >::init(), and boost::intrusive::circular_list_algorithms< NodeTraits >::unlink().

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::pop_back().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::pop_front ( )
inline

Effects: Erases the first element of the list.

No destructors are called.

Throws: Nothing.

Complexity: Constant.

Note: Invalidates the iterators (but not the references) to the erased element.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::pop_front_and_dispose().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Disposer >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::pop_front_and_dispose ( Disposer  disposer)
inline

Requires: Disposer::operator()(pointer) shouldn't throw.

Effects: Erases the first element of the list. No destructors are called. Disposer::operator()(pointer) is called for the removed element.

Throws: Nothing.

Complexity: Constant.

Note: Invalidates the iterators to the erased element.

References boost::intrusive::circular_list_algorithms< NodeTraits >::init(), and boost::intrusive::circular_list_algorithms< NodeTraits >::unlink().

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::pop_front().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::push_back ( reference  value)
inline

Requires: value must be an lvalue.

Effects: Inserts the value in the back of the list. No copy constructors are called.

Throws: Nothing.

Complexity: Constant.

Note: Does not affect the validity of iterators and references.

References boost::intrusive::circular_list_algorithms< NodeTraits >::inited(), and boost::intrusive::circular_list_algorithms< NodeTraits >::link_before().

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::clone_from().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::push_front ( reference  value)
inline

Requires: value must be an lvalue.

Effects: Inserts the value in the front of the list. No copy constructors are called.

Throws: Nothing.

Complexity: Constant.

Note: Does not affect the validity of iterators and references.

References boost::intrusive::circular_list_algorithms< NodeTraits >::inited(), and boost::intrusive::circular_list_algorithms< NodeTraits >::link_before().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
reverse_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::rbegin ( )
inline

Effects: Returns a reverse_iterator pointing to the beginning of the reversed list.

Throws: Nothing.

Complexity: Constant.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::end().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const_reverse_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::rbegin ( ) const
inline

Effects: Returns a const_reverse_iterator pointing to the beginning of the reversed list.

Throws: Nothing.

Complexity: Constant.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::crbegin().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::remove ( const_reference  value)
inline

Effects: Removes all the elements that compare equal to value.

No destructors are called.

Throws: If std::equal_to<value_type> throws. Basic guarantee.

Complexity: Linear time. It performs exactly size() comparisons for equality.

Note: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::remove_if(), and boost::program_options::value().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Disposer >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::remove_and_dispose ( const_reference  value,
Disposer  disposer 
)
inline

Requires: Disposer::operator()(pointer) shouldn't throw.

Effects: Removes all the elements that compare equal to value. Disposer::operator()(pointer) is called for every removed element.

Throws: If std::equal_to<value_type> throws. Basic guarantee.

Complexity: Linear time. It performs exactly size() comparisons for equality.

Note: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::remove_and_dispose_if().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Pred , class Disposer >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::remove_and_dispose_if ( Pred  pred,
Disposer  disposer 
)
inline

Requires: Disposer::operator()(pointer) shouldn't throw.

Effects: Removes all the elements for which a specified predicate is satisfied. Disposer::operator()(pointer) is called for every removed element.

Throws: If pred throws. Basic guarantee.

Complexity: Linear time. It performs exactly size() comparisons for equality.

Note: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid.

References boost::intrusive::circular_list_algorithms< NodeTraits >::stable_partition_info::beg_2st_partition, boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase_and_dispose(), boost::intrusive::circular_list_algorithms< NodeTraits >::stable_partition(), and boost::multiprecision::backends::this.

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::remove_and_dispose().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Pred >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::remove_if ( Pred  pred)
inline

Effects: Removes all the elements for which a specified predicate is satisfied.

No destructors are called.

Throws: If pred throws. Basic guarantee.

Complexity: Linear time. It performs exactly size() calls to the predicate.

Note: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid.

References boost::intrusive::circular_list_algorithms< NodeTraits >::stable_partition_info::beg_2st_partition, boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase(), boost::intrusive::circular_list_algorithms< NodeTraits >::stable_partition_info::num_1st_partition, boost::intrusive::circular_list_algorithms< NodeTraits >::stable_partition(), and boost::multiprecision::backends::this.

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::remove().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
reverse_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::rend ( )
inline

Effects: Returns a reverse_iterator pointing to the end of the reversed list.

Throws: Nothing.

Complexity: Constant.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::begin().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const_reverse_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::rend ( ) const
inline

Effects: Returns a const_reverse_iterator pointing to the end of the reversed list.

Throws: Nothing.

Complexity: Constant.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::crend().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::reverse ( )
inline

Effects: Reverses the order of elements in the list.

Throws: Nothing.

Complexity: This function is linear time.

Note: Iterators and references are not invalidated

References boost::intrusive::circular_list_algorithms< NodeTraits >::reverse().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
static iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::s_iterator_to ( reference  value)
inlinestatic

Requires: value must be a reference to a value inserted in a list.

Effects: This function returns a const_iterator pointing to the element

Throws: Nothing.

Complexity: Constant time.

Note: Iterators and references are not invalidated. This static function is available only if the value traits is stateless.

References boost::BOOST_STATIC_ASSERT(), and boost::intrusive::circular_list_algorithms< NodeTraits >::inited().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
static const_iterator boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::s_iterator_to ( const_reference  value)
inlinestatic

Requires: value must be a const reference to a value inserted in a list.

Effects: This function returns an iterator pointing to the element.

Throws: Nothing.

Complexity: Constant time.

Note: Iterators and references are not invalidated. This static function is available only if the value traits is stateless.

References boost::BOOST_STATIC_ASSERT(), boost::intrusive::pointer_traits< Ptr >::const_cast_from(), and boost::intrusive::circular_list_algorithms< NodeTraits >::inited().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::shift_backwards ( size_type  n = 1)
inline

Effects: Moves backwards all the elements, so that the first element becomes the second, the second becomes the third...

the last element becomes the first one.

Throws: Nothing.

Complexity: Linear to the number of shifts.

Note: Does not affect the validity of iterators and references.

References boost::intrusive::circular_list_algorithms< NodeTraits >::move_forward(), and boost::n.

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::shift_forward ( size_type  n = 1)
inline

Effects: Moves forward all the elements, so that the second element becomes the first, the third becomes the second...

the first element becomes the last one.

Throws: Nothing.

Complexity: Linear to the number of shifts.

Note: Does not affect the validity of iterators and references.

References boost::intrusive::circular_list_algorithms< NodeTraits >::move_backwards(), and boost::n.

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
size_type boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::size ( void  ) const
inline

Effects: Returns the number of the elements contained in the list.

Throws: Nothing.

Complexity: Linear to the number of elements contained in the list. if constant-time size option is disabled. Constant time otherwise.

Note: Does not affect the validity of iterators and references.

References boost::intrusive::circular_list_algorithms< NodeTraits >::count().

Referenced by boost::intrusive::operator==().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::sort ( )
inline

Effects: This function sorts the list *this according to std::less<value_type>.

The sort is stable, that is, the relative order of equivalent elements is preserved.

Throws: If value_traits::node_traits::node constructor throws (this does not happen with predefined Boost.Intrusive hooks) or std::less<value_type> throws. Basic guarantee.

Notes: Iterators and references are not invalidated.

Complexity: The number of comparisons is approximately N log N, where N is the list's size.

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Predicate >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::sort ( Predicate  p)
inline

Requires: p must be a comparison function that induces a strict weak ordering

Effects: This function sorts the list *this according to p. The sort is stable, that is, the relative order of equivalent elements is preserved.

Throws: If value_traits::node_traits::node constructor throws (this does not happen with predefined Boost.Intrusive hooks) or the predicate throws. Basic guarantee.

Notes: This won't throw if list_base_hook<> or list_member_hook are used. Iterators and references are not invalidated.

Complexity: The number of comparisons is approximately N log N, where N is the list's size.

References boost::multiprecision::backends::carry, boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cbegin(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::empty(), std::fill(), boost::multiprecision::backends::i, boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::merge(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::splice(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::swap().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::splice ( const_iterator  p,
list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder > &  x 
)
inline

Requires: p must be a valid iterator of *this.

Effects: Transfers all the elements of list x to this list, before the the element pointed by p. No destructors or copy constructors are called.

Throws: Nothing.

Complexity: Constant.

Note: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::begin(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::empty(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::end(), and boost::intrusive::circular_list_algorithms< NodeTraits >::transfer().

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::merge(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::sort(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::splice().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::splice ( const_iterator  p,
list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder > &  x,
const_iterator  new_ele 
)
inline

Requires: p must be a valid iterator of *this.

new_ele must point to an element contained in list x.

Effects: Transfers the value pointed by new_ele, from list x to this list, before the element pointed by p. No destructors or copy constructors are called. If p == new_ele or p == ++new_ele, this function is a null operation.

Throws: Nothing.

Complexity: Constant.

Note: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated.

References boost::intrusive::circular_list_algorithms< NodeTraits >::transfer().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::splice ( const_iterator  p,
list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder > &  x,
const_iterator  f,
const_iterator  e 
)
inline

Requires: p must be a valid iterator of *this.

f and e must point to elements contained in list x.

Effects: Transfers the range pointed by f and e from list x to this list, before the element pointed by p. No destructors or copy constructors are called.

Throws: Nothing.

Complexity: Linear to the number of elements transferred if constant-time size option is enabled. Constant-time otherwise.

Note: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated.

References boost::intrusive::circular_list_algorithms< NodeTraits >::distance(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::splice().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::splice ( const_iterator  p,
list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder > &  x,
const_iterator  f,
const_iterator  e,
size_type  n 
)
inline

Requires: p must be a valid iterator of *this.

f and e must point to elements contained in list x. n == std::distance(f, e)

Effects: Transfers the range pointed by f and e from list x to this list, before the element pointed by p. No destructors or copy constructors are called.

Throws: Nothing.

Complexity: Constant.

Note: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated.

References boost::intrusive::circular_list_algorithms< NodeTraits >::distance(), and boost::intrusive::circular_list_algorithms< NodeTraits >::transfer().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::swap ( list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder > &  other)
inline
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::unique ( void  )
inline

Effects: Removes adjacent duplicate elements or adjacent elements that are equal from the list.

No destructors are called.

Throws: If std::equal_to<value_type throws. Basic guarantee.

Complexity: Linear time (size()-1 comparisons calls to pred()).

Note: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::unique_and_dispose().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class BinaryPredicate >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::unique ( BinaryPredicate  pred)
inline

Effects: Removes adjacent duplicate elements or adjacent elements that satisfy some binary predicate from the list.

No destructors are called.

Throws: If pred throws. Basic guarantee.

Complexity: Linear time (size()-1 comparisons equality comparisons).

Note: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid.

References boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::unique_and_dispose().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class Disposer >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::unique_and_dispose ( Disposer  disposer)
inline

Requires: Disposer::operator()(pointer) shouldn't throw.

Effects: Removes adjacent duplicate elements or adjacent elements that are equal from the list. Disposer::operator()(pointer) is called for every removed element.

Throws: If std::equal_to<value_type throws. Basic guarantee.

Complexity: Linear time (size()-1) comparisons equality comparisons.

Note: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid.

Referenced by boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::unique().

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
template<class BinaryPredicate , class Disposer >
void boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::unique_and_dispose ( BinaryPredicate  pred,
Disposer  disposer 
)
inline

Requires: Disposer::operator()(pointer) shouldn't throw.

Effects: Removes adjacent duplicate elements or adjacent elements that satisfy some binary predicate from the list. Disposer::operator()(pointer) is called for every removed element.

Throws: If pred throws. Basic guarantee.

Complexity: Linear time (size()-1) comparisons equality comparisons.

Note: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid.

References boost::xpressive::after(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cbegin(), boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::cend(), and boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::erase_and_dispose().

Member Data Documentation

template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const bool boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::constant_time_size = ConstantTimeSize
static
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const bool boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::has_container_from_iterator
static
Initial value:
=
detail::is_same< header_holder_type, detail::default_header_holder< node_traits > >::value
template<class ValueTraits, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
const bool boost::intrusive::list_impl< ValueTraits, SizeType, ConstantTimeSize, HeaderHolder >::stateful_value_traits = detail::is_stateful_value_traits<value_traits>::value
static

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