IRIX 6.5 » Books » Developer »
Standard Template Library Programmer's Guide
(document number: 007-3426-004 / published: 1999-05-21)
table of contents | additional info | download
find in page
back_insert_iterator<BackInsertionSequence>
 |
 |
 |
|
| Categories: iterators, adaptors |
Component type: type |
Description
Back_insert_iterator is an iterator adaptor that functions as an
Output Iterator: assignment through a
back_insert_iterator inserts
an object after the last element of a
Back Insertion Sequence.
[1]
Example
list<int> L;
L.push_front(3);
back_insert_iterator<list<int> > ii(L);
*ii++ = 0;
*ii++ = 1;
*ii++ = 2;
copy(L.begin(), L.end(), ostream_iterator<int>(cout, " "));
// The values that are printed are 3 0 1 2
Definition
Defined in the standard header
iterator, and in the nonstandard
backward-compatibility header
iterator.h.
Template parameters
|
Parameter
|
Description
|
Default
|
|
BackInsertionSequence
|
The type of Back Insertion Sequence into which values will be inserted.
|
|
Model of
Output Iterator. An insert iterator's set of value types (as
defined in the
Output Iterator requirements) consists of
a single type:
BackInsertionSequence::value_type.
Type requirements
The template parameter
BackInsertionSequence must be a
Back Insertion Sequence.
Public base classes
None.
Members
|
Member
|
Where defined
|
Description
|
|
back_insert_iterator(BackInsertionSequence&)
|
back_insert_iterator
|
See below.
|
|
back_insert_iterator(const back_insert_iterator&)
|
Trivial Iterator
|
The copy constructor
|
back_insert_iterator&
operator=(const back_insert_iterator&)
|
Trivial Iterator
|
The assignment operator
|
|
back_insert_iterator& operator*()
|
Output Iterator
|
Used to implement the output iterator expression *i = x. [2]
|
back_insert_iterator&
operator=(const BackInsertionSequence::value_type&)
|
Output Iterator
|
Used to implement the output iterator expression *i = x. [2]
|
|
back_insert_iterator& operator++()
|
Output Iterator
|
Preincrement.
|
|
back_insert_iterator& operator++(int)
|
Output Iterator
|
Postincrement.
|
output_iterator_tag
iterator_category(const back_insert_iterator&)
|
iterator tags
|
Returns the iterator's category.
This is a global function, not a member.
|
template<class BackInsertionSequence>
back_insert_iterator<BackInsertionSequence>
back_inserter(BackInsertionSequence& S)
|
back_insert_iterator
|
See below.
|
New members
These members are not defined
in the
Output Iterator requirements,
but are specific to
back_insert_iterator.
|
Member function
|
Description
|
|
back_insert_iterator(BackInsertionSequence& S)
|
Constructs a back_insert_iterator that inserts objects
after the last element of S. (That is, it inserts objects
just before S's past-the-end iterator.)
|
template<class BackInsertionSequence>
back_insert_iterator<BackInsertionSequence>
back_inserter(BackInsertionSequence& S);
|
Equivalent to back_insert_iterator<BackInsertionSequence>(S). [3]
This is a global function, not a member function.
|
Notes
[1]
Note the difference between assignment through a
BackInsertionSequence::iterator and assignment through a
back_insert_iterator<BackInsertionSequence>. If i is a valid
BackInsertionSequence::iterator, then it points to some particular
element in the back insertion sequence; the expression *i = t
replaces that element with t, and does not change the total number
of elements in the back insertion sequence. If ii is a valid
back_insert_iterator<BackInsertionSequence>, however, then
the expression *ii = t is equivalent, to the
expression seq.push_back(t). That is, it does not overwrite
any of seq's elements and it does change seq's size.
[2]
Note how assignment through a back_insert_iterator is implemented.
In general, unary operator* must be defined so that it returns a
proxy object, where the proxy object defines operator= to perform
the insert operation. In this case, for the sake of simplicity, the
proxy object is the back_insert_iterator itself. That is, *i simply
returns i, and *i = t is equivalent to i = t. You should not,
however, rely on this behavior. It is an implementation detail,
and it is not guaranteed to remain the same in future versions.
[3]
This function exists solely for the sake of convenience:
since it is a non-member function, the template parameters may be
inferred and the type of the back_insert_iterator need not be declared
explicitly. One easy way to reverse a range and insert it
at the end of a Back Insertion Sequence S, for example, is
reverse_copy(first, last, back_inserter(S)).
See also
insert_iterator,
front_insert_iterator,
Output Iterator,
Back Insertion Sequence,
Sequence,
Iterator overview
Copyright ©
1999 Silicon Graphics, Inc. All Rights Reserved.
TrademarkInformation
Standard Template Library Programmer's Guide
(document number: 007-3426-004 / published: 1999-05-21)
table of contents | additional info | download
home/search |
what's new |
help