Movatterモバイル変換


[0]ホーム

URL:


cplusplus.com

Reference

header

<iterator>

Iterator definitions
Aniterator is any object that, pointing to some element in a range of elements (such as an array or acontainer), has the ability to iterate through the elements of that range using a set of operators (with at least the increment (++) and dereference (*) operators).

The most obvious form of iterator is apointer: A pointer can point to elements in an array, and can iterate through them using the increment operator (++). But other kinds of iterators are possible. For example, eachcontainer type (such as alist) has a specificiterator type designed to iterate through its elements.

Notice that while a pointer is a form of iterator, not all iterators have the same functionality of pointers; Depending on the properties supported by iterators, they are classified into five different categories:

Iterator categories

Iterators are classified into five categories depending on the functionality they implement:


Input andoutput iterators are the most limited types of iterators: they can perform sequential single-pass input or output operations.

Forward iterators have all the functionality ofinput iterators and -if they are notconstant iterators- also the functionality ofoutput iterators, although they are limited to one direction in which to iterate through a range (forward). Allstandard containers support at least forward iterator types.

Bidirectional iterators are likeforward iterators but can also be iterated through backwards.

Random-access iterators implement all the functionality ofbidirectional iterators, and also have the ability to access ranges non-sequentially: distant elements can be accessed directly by applying an offset value to an iterator without iterating through all the elements in between. These iterators have a similar functionality to standard pointers (pointers are iterators of this category).

The properties of each iterator category are:

categorypropertiesvalid expressions
all categoriescopy-constructible,copy-assignable anddestructibleX b(a);
b = a;
Can be incremented++a
a++
Random AccessBidirectionalForwardInputSupports equality/inequality comparisonsa == b
a != b
Can be dereferenced as anrvalue*a
a->m
OutputCan be dereferenced as anlvalue
(only formutable iterator types)
*a = t
*a++ = t
default-constructibleX a;
X()
Multi-pass: neither dereferencing nor incrementing affects dereferenceability{ b=a; *a++; *b; }
Can be decremented--a
a--
*a--
Supports arithmetic operators+ and-a + n
n + a
a - n
a - b
Supports inequality comparisons (<,>,<= and>=) between iteratorsa < b
a > b
a <= b
a >= b
Supports compound assignment operations+= and-=a += n
a -= n
Supports offset dereference operator ([])a[n]

WhereX is an iterator type,a andb are objects of this iterator type,t is an object of the type pointed by the iterator type, andn is an integer value.

For more details, see the references forinput iterator,output iterator,forward iterator,bidirectional iterator andrandom-access iterator.

Functions

Iterator operations:
advance
Advance iterator(function template)
distance
Return distance between iterators(function template)
begin
Iterator to beginning(function template)
end
Iterator to end(function template)
prev
Get iterator to previous element(function template)
next
Get iterator to next element(function template)

Iterator generators:
back_inserter
Construct back insert iterator(function template)
front_inserter
Constructs front insert iterator(function template)
inserter
Construct insert iterator(function template)
make_move_iterator
Construct move iterator(function template)

Classes

iterator
Iterator base class(class template)
iterator_traits
Iterator traits(class template)

Predefined iterators

reverse_iterator
Reverse iterator(class template)
move_iterator
Move iterator(class template)
back_insert_iterator
Back insert iterator(class template)
front_insert_iterator
Front insert iterator(class template)
insert_iterator
Insert iterator(class template)
istream_iterator
Istream iterator(class template)
ostream_iterator
Ostream iterator(class template)
istreambuf_iterator
Input stream buffer iterator(class template)
ostreambuf_iterator
Output stream buffer iterator(class template)

Category tags

input_iterator_tag
Input iterator category(class)
output_iterator_tag
Output iterator category(class)
forward_iterator_tag
Forward iterator category(class)
bidirectional_iterator_tag
Bidirectional iterator category(class)
random_access_iterator_tag
Random-access iterator category(class)
Home page |Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved -v3.3.4s
Spotted an error? contact us

[8]ページ先頭

©2009-2026 Movatter.jp