]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/vector.h
Initial review of various [q-r] by Utensil Candel.
[wxWidgets.git] / interface / vector.h
index a32f018b73eb032fbcdaab58db568e37348177e9..65e39a4a1d4051002f4ebea226444a4c57769363 100644 (file)
@@ -7,64 +7,81 @@
 /////////////////////////////////////////////////////////////////////////////
 
 /**
-    @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.
+    wxVector<T> is a template class which implements most of the @c std::vector
+    class and can be used like it.
 
-    You can refer to the STL documentation for further information.
+    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<T>
+    need to be @e assignable but don't have to be @e "default constructible".
 
-    @library{wxbase}
-    @category{FIXME}
+    Please refer to the STL documentation for further information.
 
-    @see @ref overview_wxcontaineroverview, wxListT(), wxArrayT()
+    @nolibrary
+    @category{containers}
+
+    @see @ref overview_container, wxList<T>, wxArray<T>
 */
+template<typename T>
 class wxVector<T>
 {
 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<T>& c);
-    //@}
+    wxVector();
+
+    /**
+        Copy onstructor.
+    */
+    wxVector(const wxVector<T>& c);
 
     /**
         Destructor.
     */
-    ~wxVectorT();
+    ~wxVector();
+
+    /**
+        Returns item at position @a idx.
+    */
+    const value_type& at(size_type idx) const;
+
+    /**
+        Returns item at position @a idx.
+    */
+    value_type& at(size_type idx);
 
-    //@{
     /**
-        Returns item at position @e idx.
+        Return the last item.
     */
-    const value_type at(size_type idx);
-    const value_type at(size_type idx);
-    //@}
+    const value_type& back() const;
 
-    //@{
     /**
-        Return last item.
+        Return the last item.
     */
-    const value_type back();
-    const value_type back();
-    //@}
+    value_type& back();
 
-    //@{
     /**
         Return iterator to beginning of the vector.
     */
-    const_iterator begin();
-    const iterator begin();
-    //@}
+    const_iterator begin() const;
 
     /**
-        
+        Return iterator to beginning of the vector.
+    */
+    iterator begin();
+
+    /**
+        Returns vector's current capacity, i.e. how much memory is allocated.
+
+        @see reserve()
     */
     size_type capacity() const;
 
@@ -78,52 +95,62 @@ public:
     */
     bool empty() const;
 
-    //@{
     /**
         Returns iterator to the end of the vector.
     */
-    const_iterator end();
-    const iterator end();
-    //@}
+    const_iterator end() const;
+
+    /**
+        Returns iterator to the end of the vector.
+    */
+    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);
+
+    /**
+        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 first item.
+        Returns the first item.
+    */
+    const value_type& front() const;
+
+    /**
+        Returns the first item.
     */
-    const value_type front();
-    const 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<T>& 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);
-    const value_type operator[](size_type idx);
-    //@}
+    value_type& operator[](size_type idx);
 
     /**
         Removes the last item.
@@ -136,10 +163,15 @@ public:
     void push_back(const value_type& v);
 
     /**
-        Reserves more memory of @a 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;
 };