Defined Terms
adaptor Library type, function, or iterator that, given a type, function, or iterator, makes it act like another. There are three sequential container adaptors:
stack
,queue
, andpriority_queue
. Each adaptor defines a new interface on top of an underlying sequential container type.array Fixed-size sequential container. To define an
array
, we must give the size in addition to specifying the element type. Elements in anarray
can be accessed by their positional index. Supports fast random access to elements.begin Container operation that returns an iterator referring to the first element in the container, if there is one, or the off-the-end iterator if the container is empty. Whether the returned iterator is
const
depends on the type of the container.cbegin Container operation that returns a
const_iterator
referring to the first element in the container, if there is one, or the off-the-end iterator if the container is empty.cend Container operation that returns a
const_iterator
referring to the (nonexistent) element one past the end of the container.container Type that holds a collection of objects of a given type. Each library container type is a template type. To define a container, we must specify the type of the elements stored in the container. With the exception of
array
, the library containers are variable-size.deque Sequential container. Elements in a
deque
can be accessed by their positional index. Supports fast random access to elements. Like avector
in all respects except that it supports fast insertion and deletion at the front of the container as well as at the back and does not relocate elements as a result of insertions or deletions at either end.end Container operation that returns an iterator referring to the (nonexistent) element one past the end of the container. Whether the returned iterator is
const
depends on the type of the container.forward_list Sequential container that represents a singly linked list. Elements in a
forward_list
may be accessed only sequentially; starting from a given element, we can get to another element only by traversing each element between them. Iterators onforward_list
do not support decrement (--
). Supports fast insertion (or deletion) anywhere in theforward_list
. Unlike other containers, insertions and deletions occur after a given iterator position. As a consequence,forward_list
has a “before-the-beginning” iterator to go along with the usual off-the-end iterator. Iterators remain valid when new elements are added. When an element is removed, only the iterators to that element are invalidated.iterator range Range of elements denoted by a pair of iterators. The first iterator denotes the first element in the sequence, and the second iterator denotes one past the last element. If the range is empty, then the iterators are equal (and vice versa—if the iterators are unequal, they denote a nonempty range). If the range is not empty, then it must be possible to reach the second iterator by repeatedly incrementing the first iterator. By incrementing the iterator, each element in the sequence can be processed.
left-inclusive interval A range of values that includes its first element but not its last. Typically denoted as
[i, j)
, meaning the sequence starting at and includingi
up to but excludingj
.list Sequential container representing a doubly linked list. Elements in a
list
may be accessed only sequentially; starting from a given element, we can get to another element only by traversing each element between them. Iterators onlist
support both increment (++
) and decrement (--
). Supports fast insertion (or deletion) anywhere in thelist
. Iterators remain valid when new elements are added. When an element is removed, only the iterators to that element are invalidated.off-the-beginning iterator Iterator denoting the (nonexistent) element just before the beginning of a
forward_list
. Returned from theforward_list
memberbefore_begin
. Like theend()
iterator, it may not be dereferenced.off-the-end iterator Iterator that denotes one past the last element in the range. Commonly referred to as the “end iterator”.
priority_queue Adaptor for the sequential containers that yields a queue in which elements are inserted, not at the end but according to a specified priority level. By default, priority is determined by using the less-than operator for the element type.
queue Adaptor for the sequential containers that yields a type that lets us add elements to the back and remove elements from the front.
sequential container Type that holds an ordered collection of objects of a single type. Elements in a sequential container are accessed by position.
stack Adaptor for the sequential containers that yields a type that lets us add and remove elements from one end only.
vector Sequential container. Elements in a
vector
can be accessed by their positional index. Supports fast random access to elements. We can efficiently add or removevector
elements only at the back. Adding elements to avector
might cause it to be reallocated, invalidating all iterators into thevector
. Adding (or removing) an element in the middle of avector
invalidates all iterators to elements after the insertion (or deletion) point.