X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/23324ae1c7938ba904770fc456d3c07764b9c5e9..f0871806fb56851483a12ec8e49a9bf43cd5caf7:/interface/vector.h diff --git a/interface/vector.h b/interface/vector.h index 3ca85c6c3e..65e39a4a1d 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. + Returns item at position @a idx. */ - const value_type at(size_type idx); - value_type at(size_type idx); - //@} + const value_type& at(size_type idx) const; - //@{ /** - Return last item. + Returns item at position @a idx. */ - const value_type back(); - value_type back(); - //@} + value_type& at(size_type idx); + + /** + Return the last item. + */ + const value_type& back() const; + + /** + Return the last item. + */ + value_type& back(); + + /** + Return iterator to beginning of the vector. + */ + 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(); - iterator end(); - //@} + const_iterator end() const; - //@{ /** - Erase items. When using values other than built-in integrals - or classes with reference counting this can be an inefficient - operation. + Returns iterator to the end of the vector. + */ + iterator end(); + + /** + 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() const; + + /** + Returns the first item. */ - const value_type front(); - value_type front(); - //@} + value_type& front(); /** - ) - - Insert an item. When using values other than built-in integrals - or classes with reference counting this can be an inefficient - operation. + Insert item @a v at given position @a it. + + @return Iterator for the inserted item. */ - iterator insert(iterator it); + iterator insert(iterator it, const value_type& v = value_type()); /** Assignment operator. */ - wxVectorT& operator operator=(const wxVector& vb); + wxVector& operator=(const wxVector& vb); + + /** + Returns item at position @a idx. + */ + const value_type& operator[](size_type idx) const; - //@{ /** - Returns item at position @e idx. + Returns item at position @a idx. */ - const value_type operator[](size_type idx); - value_type operator[](size_type idx); - //@} + value_type& operator[](size_type idx); /** Removes the last item. @@ -139,9 +163,15 @@ 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); + + /** + Returns the size of the vector. + */ + size_type size() const; }; +