advance
Inkrementuje iterator o określoną liczbę pozycji.
template<class InputIterator, class Distance>
void advance(
InputIterator& InIt,
Distance Off
);
Parametry
InIt
Iterator, który ma być inkrementowany i który musi spełniać wymagania dla iteratora danych wejściowych.Off
Typ całkowitoliczbowy, który jest konwertowany na typ różnicy iteratora i który określa liczbę inkrementacji, o którą ma być zwiększone położenie iteratora.
Uwagi
Zakres zwiększania musi być niepojedynczy, a iteratory muszą być wyłuskiwalne lub znajdować się po końcu.
Jeśli InputIterator spełnia wymagania dla typu iteratora dwukierunkowego, wówczas Off może być ujemny.Jeśli InputIterator jest typem iteratora danych wejścowych lub iteratora do przodu, Off musi być nieujemny.
Funkcja zwiększania ma stałą złożoność, gdy InputIterator spełnia wymagania dotyczące iteratora dostępu swobodnego; w przeciwnym razie ma złożoność liniową i potencjalnie wymaga więcej zasobów.
Przykład
// iterator_advance.cpp
// compile with: /EHsc
#include <iterator>
#include <list>
#include <iostream>
int main( )
{
using namespace std;
int i;
list<int> L;
for ( i = 1 ; i < 9 ; ++i )
{
L.push_back ( i );
}
list <int>::iterator L_Iter, LPOS = L.begin ( );
cout << "The list L is: ( ";
for ( L_Iter = L.begin( ) ; L_Iter != L.end( ); L_Iter++)
cout << *L_Iter << " ";
cout << ")." << endl;
cout << "The iterator LPOS initially points to the first element: "
<< *LPOS << "." << endl;
advance ( LPOS , 4 );
cout << "LPOS is advanced 4 steps forward to point"
<< " to the fifth element: "
<< *LPOS << "." << endl;
advance ( LPOS , -3 );
cout << "LPOS is moved 3 steps back to point to the "
<< "2nd element: " << *LPOS << "." << endl;
}
Wymagania
Nagłówek: <iterator>
Przestrzeń nazw: std