X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/23324ae1c7938ba904770fc456d3c07764b9c5e9..f9d6e4e454ac06b3303c71081b289152c8867ec1:/interface/vector.h diff --git a/interface/vector.h b/interface/vector.h index 3ca85c6c3e..5492dba9f6 100644 --- a/interface/vector.h +++ b/interface/vector.h @@ -1,74 +1,89 @@ ///////////////////////////////////////////////////////////////////////////// // Name: vector.h -// Purpose: documentation for wxVector class +// Purpose: interface of wxVector // Author: wxWidgets team // RCS-ID: $Id$ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// /** - @class wxVectorT @wxheader{vector.h} - - wxVectorT is a template class which implements most of the std::vector - class and can be used like it. If wxWidgets is compiled in STL mode, - wxVector will just be a typedef to std::vector. Just like for std::vector, - objects stored in wxVectorT need to be @e assignable but don't have to - be @e default constructible. - - You can refer to the STL documentation for further information. - - @library{wxbase} - @category{FIXME} - - @seealso - @ref overview_wxcontaineroverview "Container classes overview", wxListT, - wxArrayT + + wxVector is a template class which implements most of the @c std::vector + class and can be used like it. + + If wxWidgets is compiled in STL mode, wxVector will just be a typedef to @c + std::vector. Just like for @c std::vector, objects stored in wxVector + need to be @e assignable but don't have to be @e default constructible. + + Please refer to the STL documentation for further information. + + @nolibrary + @category{containers} + + @see @ref overview_container, wxList, wxArray */ -class wxVector +template +class wxVector { public: - //@{ + typedef size_t size_type; + typedef T value_type; + typedef value_type* iterator; + typedef const value_type* const_iterator; + typedef value_type& reference; + /** Constructor. */ - wxVectorT(); - wxVectorT(const wxVector& c); - //@} + wxVector(); + + /** + Copy onstructor. + */ + wxVector(const wxVector& c); /** Destructor. */ - ~wxVectorT(); + ~wxVector(); + + /** + Returns item at position @e idx. + */ + const value_type& at(size_type idx) const; - //@{ /** Returns item at position @e idx. */ - const value_type at(size_type idx); - value_type at(size_type idx); - //@} + value_type& at(size_type idx); + + /** + Return the last item. + */ + const value_type& back() const; - //@{ /** - Return last item. + Return the last item. + */ + value_type& back(); + + /** + Return iterator to beginning of the vector. */ - const value_type back(); - value_type back(); - //@} + const_iterator begin() const; - //@{ /** Return iterator to beginning of the vector. */ - const_iterator begin(); - iterator begin(); - //@} + iterator begin(); /** - + Returns vector's current capacity, i.e. how much memory is allocated. + + @see reserve() */ - size_type capacity(); + size_type capacity() const; /** Clears the vector. @@ -78,55 +93,64 @@ public: /** Returns @true if the vector is empty. */ - bool empty(); + bool empty() const; + + /** + Returns iterator to the end of the vector. + */ + const_iterator end() const; - //@{ /** Returns iterator to the end of the vector. */ - const_iterator end(); - iterator end(); - //@} + iterator end(); - //@{ /** - Erase items. When using values other than built-in integrals - or classes with reference counting this can be an inefficient - operation. + Erase item pointed to by iterator @a it. + + @return Iterator pointing to the item immediately after the erased one. */ iterator erase(iterator it); - iterator erase(iterator first, iterator last); - //@} - //@{ /** - Returns first item. + Erase items in the range @a first to @a last (@a last is not erased). + + @return Iterator pointing to the item immediately after the + erased range. + */ + iterator erase(iterator first, iterator last); + + /** + Returns the first item. */ - const value_type front(); - value_type front(); - //@} + const value_type& front() const; /** - ) - - Insert an item. When using values other than built-in integrals - or classes with reference counting this can be an inefficient - operation. + Returns the first item. */ - iterator insert(iterator it); + value_type& front(); + + /** + Insert item @a v at given position @a it. + + @return Iterator for the inserted item. + */ + iterator insert(iterator it, const value_type& v = value_type()); /** Assignment operator. */ wxVectorT& operator operator=(const wxVector& vb); - //@{ /** Returns item at position @e idx. */ - const value_type operator[](size_type idx); - value_type operator[](size_type idx); - //@} + const value_type& operator[](size_type idx) const; + + /** + Returns item at position @e idx. + */ + value_type& operator[](size_type idx); /** Removes the last item. @@ -139,9 +163,10 @@ public: void push_back(const value_type& v); /** - Reserves more memory of @e n is greater then - wxVector::size. Other this call has - no effect. + Reserves memory for at least @a n items. + + @see capacity() */ void reserve(size_type n); }; +