This section describes all the common operations for all the pointer sequences:
The ptr_sequence_adapter is also a concrete class that you can use to create custom pointer containers from.
See also:
Navigate:
Synopsis:
namespace boost
{
template
<
class T,
class VoidPtrSeq,
class CloneAllocator = heap_clone_allocator
>
class ptr_sequence_adapter
{
public: // construct/copy/destroy
template< class InputIterator >
assign( InputIterator first, InputIterator last );
template< class InputRange >
assign( const InputRange& e );
public: // element access
T& front();
const T& front() const;
T& back();
const T& back() const;
public: // modifiers
void push_back( T* x );
auto_type pop_back();
iterator insert( iterator position, T* x );
template< class InputIterator >
void insert( iterator position, InputIterator first, InputIterator last );
template< class InputRange >
void insert( iterator position, const InputRange& r );
iterator erase( iterator position );
iterator erase( iterator first, iterator last );
template< class Range >
iterator erase( const Range& r );
public: // pointer container requirements
void transfer( iterator before, iterator object,
ptr_sequence_adapter& from );
void transfer( iterator before, iterator first, iterator last,
ptr_sequence_adapter& from );
void template< class Range>
void transfer( iterator before, const Range& r, ptr_sequence_adapter& from );
void transfer( iterator before, ptr_sequence_adapter& from );
public: // ptr_list interface
public: // ptr_vector interface
public: // ptr_deque interface
}; // class 'ptr_sequence_adapter'
} // namespace 'boost'
template< class InputIterator > void assign( InputIterator first, InputIterator last );
- Requirements: (first,last] is a valid range
- Effects: clear(); insert( first, last );
- Postconditions: size() == std::distance( first, last );
- Exception safety: strong guarantee
template< class InputRange > void assign( const InputRange& r );
- Effects: assign( boost::begin(r), boost::end(r) );
T& front();
- Requirements: not empty();
- Effects: return *begin();
- Throws: bad_ptr_container_operation if empty() == true
const T& front() const;
- Requirements: not empty();
- Effects: return *begin();
- Throws: bad_ptr_container_operation if empty() == true
T& back();
- Requirements: not empty();
- Effects: return *--end();
- Throws: bad_ptr_container_operation if empty() == true
const T& back() const;
- Requirements: not empty();
- Effects: return *--end();
- Throws: bad_ptr_container_operation if empty() == true
void push_back( T* x );
- Requirements: x != 0
- Effects: Inserts the pointer into container and takes ownership of it
- Throws: bad_pointer if x == 0
- Exception safety: Strong guarantee
auto_type pop_back();
- Requirements:not empty()
- Effects: Removes the last element in the container
- Postconditions: size() is one less
- Throws: bad_ptr_container_operation if empty() == true
- Exception safety: Strong guarantee
iterator insert( iterator position, T* x );
- Requirements: position is a valid iterator from the container and x != 0
- Effects: Inserts x before position and returns an iterator pointing to it
- Throws: bad_pointer if x == 0
- Exception safety: Strong guarantee
template< class InputIterator > void insert( iterator position, InputIterator first, InputIterator last );
- Requirements: position is a valid iterator from the container
- Effects: Inserts a cloned range before position
- Exception safety: Strong guarantee
template< class InputRange > void insert( iterator position, const InputRange& r );
- Effects: insert( position, boost::begin(r), boost::end(r) );
iterator erase( iterator position );
- Requirements: position is a valid iterator from the container
- Effects: Removes the element defined by position and returns an iterator to the following element
- Throws: Nothing
iterator erase( iterator first, iterator last );
- Requirements: [first,last) is a valid range
- Effects: Removes the range of element defined by [first,last) and returns an iterator to the following element
- Throws: Nothing
template< class Range > void erase( const Range& r );
- Effects: erase( boost::begin(r), boost::end(r) );
void transfer( iterator before, iterator object, ptr_sequence_adapter& from );
- Requirements: not from.empty()
- Effects: Inserts the object defined by object into the container and remove it from from.
- Postconditions: size() is one more, from.size() is one less.
- Exception safety: Strong guarantee
void transfer( iterator before, iterator first, iterator last, ptr_sequence_adapter& from );
- Requirements: not from.empty()
- Effects: Inserts the objects defined by the range [first,last) into the container and remove it from from.
- Postconditions: Let N == std::distance(first,last); then size() is N more, from.size() is N less.
- Exception safety: Strong guarantee
template< class Range> void transfer( iterator before, const Range& r, ptr_sequence_adapter& from );
- Effects: transfer(before, boost::begin(r), boost::end(r), from);
void transfer( iterator before, ptr_sequence_adapter& from );
- Effects: Transfers all objects from from into the container. Insertion takes place before before.
- Postconditions: from.empty();
- Exception safety: Strong guarantee