...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
A ptr_vector<T> is a pointer container that uses an underlying std::vector<void*> to store the pointers.
Hierarchy:
Navigate:
Synopsis:
namespace boost { template < class T, class CloneAllocator = heap_clone_allocator, class Allocator = std::allocator<void*> > class ptr_vector : public ptr_sequence_adapter < T, std::vector<void*,Allocator>, CloneAllocator > { public: // construction explicit ptr_vector( size_type to_reserve ); public: // capacity size_type capacity() const; void reserve( size_type n ); public: // element access T& operator[]( size_type n ); const T& operator[]( size_type n ) const; T& at( size_type n ); const T& at( size_type n ) const; public: // pointer container requirements auto_type replace( size_type idx, T* x ); template< class U > auto_type replace( size_type idx, compatible-smart-ptr<U> x ); bool is_null( size_type idx ) const; public: // C-array support void transfer( iterator before, T** from, size_type size, bool delete_from = true ); T** c_array(); }; } // namespace 'boost'
explicit ptr_vector( size_type to_reserve );
- constructs an empty vector with a buffer of size least to_reserve
size_type capacity() const;
- Effects: Returns the size of the allocated buffer
- Throws: Nothing
void reserve( size_type n );
- Requirements: n <= max_size()
- Effects: Expands the allocated buffer
- Postcondition: capacity() >= n
- Throws: std::length_error() if n > max_size()
T& operator[]( size_type n );
const T& operator[]( size_type n ) const;
- Requirements: n < size()
- Effects: Returns a reference to the n'th element
- Throws: Nothing
T& at( size_type n );
const T& at( size_type n ) const;
- Requirements: n < size()
- Effects: Returns a reference to the n'th element
- Throws: bad_index if n >= size()
auto_type replace( size_type idx, T* x );
- Requirements: `` x != 0 and idx < size()``
- Effects: returns the object indexed by idx and replaces it with x.
- Throws: bad_index if idx >= size() and bad_pointer if x == 0.
- Exception safety: Strong guarantee
template< class U > auto_type replace( size_type idx, compatible-smart-ptr<U> x );
- Effects: return replace( idx, x.release() );
bool is_null( size_type idx ) const;
- Requirements: idx < size()
- Effects: returns whether the pointer at index idx is null
- Exception safety: Nothrow guarantee
void transfer( iterator before, T** from, size_type size, bool delete_from = true );
- Requirements: from != 0
- Effects: Takes ownership of the dynamic array from
- Exception safety: Strong guarantee if delete_from == true; if delete_from == false, and an exception is thrown, the container fails to take ownership.
- Remarks: Eventually calls delete[] from if delete_from == true.
T** c_array();
- Returns: 0 if the container is empty; otherwise a pointer to the first element of the stored array
- Throws: Nothing
Copyright: | Thorsten Ottosen 2004-2007. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt). |
---|