/////////////////////////////////////////////////////////////////////////////
// Name: vector.h
-// Purpose: documentation for wxVector<T> class
+// Purpose: interface of wxVector<T>
// 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<T> 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<T>
+ 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<T>, wxArray<T>
*/
-class wxVector<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 @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.
/**
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<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);
- value_type operator[](size_type idx);
- //@}
+ value_type& operator[](size_type idx);
/**
Removes the last item.
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;
};
+