Defined Terms
back_inserter Iterator adaptor that takes a reference to a container and generates an insert iterator that uses
push_back
to add elements to the specified container.bidirectional iterator Same operations as forward iterators plus the ability to use
--
to move backward through the sequence.binary predicate Predicate that has two parameters.
bind Library function that binds one or more arguments to a callable expression.
bind
is defined in thefunctional
header.callable object Object that can appear as the left-hand operand of the call operator. Pointers to functions, lambdas, and objects of a class that defines an overloaded function call operator are all callable objects.
capture list Portion of a lambda expression that specifies which variables from the surrounding context the lambda expression may access.
cref Library function that returns a copyable object that holds a reference to a
const
object of a type that cannot be copied.forward iterator Iterator that can read and write elements but is not required to support
--
.front_inserter Iterator adaptor that, given a container, generates an insert iterator that uses
push_front
to add elements to the beginning of that container.generic algorithms Type-independent algorithms.
input iterator Iterator that can read, but not write, elements of a sequence.
insert iterator Iterator adaptor that generates an iterator that uses a container operation to add elements to a given container.
inserter Iterator adaptor that takes an iterator and a reference to a container and generates an insert iterator that uses
insert
to add elements just ahead of the element referred to by the given iterator.istream_iterator Stream iterator that reads an input stream.
iterator categories Conceptual organization of iterators based on the operations that an iterator supports. Iterator categories form a hierarchy, in which the more powerful categories offer the same operations as the lesser categories. The algorithms use iterator categories to specify what operations the iterator arguments must support. As long as the iterator provides at least that level of operation, it can be used. For example, some algorithms require only input iterators. Such algorithms can be called on any iterator other than one that meets only the output iterator requirements. Algorithms that require random-access iterators can be used only on iterators that support random-access operations.
lambda expression Callable unit of code. A lambda is somewhat like an unnamed, inline function. A lambda starts with a capture list, which allows the lambda to access variables in the enclosing function. Like a function, it has a (possibly empty) parameter list, a return type, and a function body. A lambda can omit the return type. If the function body is a single
return
statement, the return type is inferred from the type of the object that is returned. Otherwise, an omitted return type defaults tovoid
.move iterator Iterator adaptor that generates an iterator that moves elements instead of copying them. Move iterators are covered in Chapter 13.
ostream_iterator Iterator that writes to an output stream.
output iterator Iterator that can write, but not necessarily read, elements.
predicate Function that returns a type that can be converted to
bool
. Often used by the generic algorithms to test elements. Predicates used by the library are either unary (taking one argument) or binary (taking two).random-access iterator Same operations as bidirectional iterators plus the relational operators to compare iterator values, and the subscript operator and arithmetic operations on iterators, thus supporting random access to elements.
ref Library function that generates a copyable object from a reference to an object of a type that cannot be copied.
reverse iterator Iterator that moves backward through a sequence. These iterators exchange the meaning of
++
and--
.stream iterator Iterator that can be bound to a stream.
unary predicate Predicate that has one parameter.