The Sequential containers are in their turn divided into two major groups:
A Static container interface provides an interface to iterate and access to the elements the amount of which is not changed during container’s object life time. But the Dynamic container interface extends the Static container interface by an ability to modify quantity of the elements by inserting and erasing them from/to the container.
The Dynamic::Array container interface is an extention of the Dynamic container and exposes an interface to the specific functionality of the array-like dynamic containers.
Both the Static and Dynamic container interfaces extend the Forward functionality by ability to access and modify the container in the Reverse manner.
Container | Interface | |||
---|---|---|---|---|
Static | Iterate from |
[Const::][Reverse::]Iterator |
[c][r]begin() [c][r]end() |
[const] |
Access to | [Const::]Iterator::Return::Type | front() back() at(Int index) [const] operator[](Int index) [const] |
||
Dynamic | Where to insert | What to insert | ||
At position | [Const::][Reverse::]Iterator | insert(const [Const::][Reverse::]Iterator &, |
Type && | const Type & | Type & | UInt count, const Type & | const Range/Contaner & | const RangeIterator &first, const RangeIterator &last) |
|
At back | Void | pushBack( | ||
At front | Void | pushFront( | ||
Replace entirely | Container & | assign( | ||
Construct a new | Container( | |||
Were to erase | What to erase | |||
At position/range | Void | erase( | const [Const::][Reverse::]Iterator &[, const [Const::][Reverse::]Iterator &]| const Range &) |
|
At back | Void | popBack( | ||
At front | Void | popFront( | ||
Entirely | Void | clear() | ||
Dynamic::Array | Void | [set|ensure][Front|Back]Capacity | ([UInt front][[,] UInt back]) | |
Void | shrinkToFit() |
There are several containers which implement the Static/Dynamic container conception as depicted above:
Operations | Static | Dynamic | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Containers | Containers | Adaptors | ||||||||||||||
Range | Static:: | Weak:: Array |
Unique:: Array |
Forward:: List |
List | Vector | Deque | Ring:: | COW | SCO | ||||||
Weak:: Array |
Unique:: Array |
Vector | Deque | |||||||||||||
Static | Types |
typename | Type | |||||||||||||
typename | Iterator | |||||||||||||||
typename | Reverse::Iterator | |||||||||||||||
typename | Const::Iterator | |||||||||||||||
typename | Const::Reverse::Iterator | |||||||||||||||
Iteration |
Iterator | begin() | ||||||||||||||
Iterator | end () | |||||||||||||||
Const::Iterator | begin() const | |||||||||||||||
Const::Iterator | end () const | |||||||||||||||
Const::Iterator | cbegin() const | |||||||||||||||
Const::Iterator | cend () const | |||||||||||||||
Reverse::Iterator | rbegin() | |||||||||||||||
Reverse::Iterator | rend () | |||||||||||||||
Const::Reverse::Iterator | rbegin() const | |||||||||||||||
Const::Reverse::Iterator | rend () const | |||||||||||||||
Const::Reverse::Iterator | crbegin() const | |||||||||||||||
Const::Reverse::Iterator | crend () const | |||||||||||||||
Capacity |
UInt | size() const | ||||||||||||||
Bool | empty() const | |||||||||||||||
Element access |
Iterator::Return::Type | front() | ||||||||||||||
Const::Iterator::Return::Type | front() const | |||||||||||||||
Iterator::Return::Type | back() | |||||||||||||||
Const::Iterator::Return::Type | back() const | |||||||||||||||
Iterator::Return::Type | at(Int index) | |||||||||||||||
Const::Iterator::Return::Type | at(Int index) const | |||||||||||||||
Iterator::Return::Type | operator[](Int index) | |||||||||||||||
Const::Iterator::Return::Type | operator[](Int index) const | |||||||||||||||
Comparison |
template <typename U> Bool |
operator == (const U &u) const | ||||||||||||||
template <typename U> Bool |
operator != (const U &u) const | |||||||||||||||
template <typename Range> Bool |
equal(const Range &range) const | |||||||||||||||
template <typename How, typename Range> Bool |
equal(const Range &range, const How &how = How()) const | |||||||||||||||
template <typename How, typename Iterator> Bool |
equal(const Iterator &begin, const Iterator &end, const How &how = How()) const | |||||||||||||||
Relational |
template <typename U> Int |
operator – (const U &u) const | ||||||||||||||
template <typename U> Bool |
operator > (const U &u) const | |||||||||||||||
template <typename U> Bool |
operator >= (const U &u) const | |||||||||||||||
template <typename U> Bool |
operator < (const U &u) const | |||||||||||||||
template <typename U> Bool |
operator <= (const U &u) const | |||||||||||||||
template <typename Range> Int |
different(const Range &range) const | |||||||||||||||
template <typename How, typename Range> Int |
different(const Range &range, const How &how = How()) const | |||||||||||||||
template <typename How, typename Iterator> Int |
different(const Iterator &begin, const Iterator &end, const How &how = How()) const | |||||||||||||||
Dynamic | Capacity |
UInt | maxSize() const | |||||||||||||
UInt | capacity() const | |||||||||||||||
Void | resize(UInt size, const Type &value = Type()) const | |||||||||||||||
Modifiers |
template <typename Iterator> Iterator |
insert(const Iterator &iterator, Type &&value) | ||||||||||||||
template <typename Iterator> Iterator |
insert(const Iterator &iterator, const Type &value) | |||||||||||||||
template <typename Iterator> Iterator |
insert(const Iterator &iterator, Type &value) | |||||||||||||||
template <typename Iterator> Iterator |
insert(const Iterator &iterator, UInt count, const Type &value) | |||||||||||||||
template <typename Iterator, typename Range> Iterator |
insert(const Iterator &iterator, const Range &range) | |||||||||||||||
template <typename Iterator, typename RangeIterator> Iterator |
insert(const Iterator &iterator, const RangeIterator &first, const RangeIterator &last) | |||||||||||||||
template <typename Iterator> Iterator |
insert(const Iterator &iterator, const LWF::Initializer::List |
|||||||||||||||
template <typename Iterator> Iterator |
erase(const Iterator &iterator) | |||||||||||||||
template <typename Iterator> Iterator |
erase(const Iterator &first, const Iterator& last) | |||||||||||||||
template <typename Range> typename Range::Iterator |
erase(const Range &range) | |||||||||||||||
Void | clear() | |||||||||||||||
Void | pushFront(Type &&value) | |||||||||||||||
Void | pushFront(const Type &value) | |||||||||||||||
Void | pushFront(Type &value) | |||||||||||||||
Void | pushFront(UInt count, const Type &value) | |||||||||||||||
template <typename Range> Void |
pushFront(const Range &range) | |||||||||||||||
template <typename RangeIterator> Void |
pushFront(const RangeIterator &first, const RangeIterator &last) | |||||||||||||||
Void | pushFront(const LWF::Initializer::List |
|||||||||||||||
Void | popFront() | |||||||||||||||
Void | pushBack(Type &&value) | |||||||||||||||
Void | pushBack(const Type &value) | |||||||||||||||
Void | pushBack(Type &value) | |||||||||||||||
Void | pushBack(UInt count, const Type &value) | |||||||||||||||
template <typename Range> Void |
pushBack(const Range &range) | |||||||||||||||
template <typename RangeIterator> Void |
pushBack(const RangeIterator &first, const RangeIterator &last) | |||||||||||||||
Void | pushBack(const LWF::Initializer::List |
|||||||||||||||
Void | popBack() | |||||||||||||||
Container & | assign(Type &&value) | |||||||||||||||
Container & | assign(const Type &value) | |||||||||||||||
Container & | assign(Type &value) | |||||||||||||||
Container & | assign(UInt count, const Type &value) | |||||||||||||||
template <typename Range> Container & |
assign(const Range &range) | |||||||||||||||
template <typename RangeIterator> Container & |
assign(const RangeIterator &first, const RangeIterator &last) | |||||||||||||||
Container & | assign(const LWF::Initializer::List |
|||||||||||||||
template <typename Iterator> Void |
swap(const Iterator &one, const Iterator& other) | |||||||||||||||
Void | swap(Container &container) | |||||||||||||||
Dynamic:: Array |
Capacity |
Void | shrinkToFit() | |||||||||||||
Void | ensureCapacity(UInt front, UInt back) | |||||||||||||||
Void | ensureFrontCapacity(UInt front) | |||||||||||||||
Void | ensureBackCapacity(UInt back) | |||||||||||||||
Void | setCapacity(UInt front, UInt back) | |||||||||||||||
Void | setFrontCapacity(UInt front) | |||||||||||||||
Void | setBackCapacity(UInt back) | |||||||||||||||
Dynamic:: Ring:: Array |
Capacity |
Void | ensureCapacity(UInt capacity) | |||||||||||||
Void | setCapacity(UInt capacity) |