advance
Incrémente un itérateur d'un nombre spécifié de positions.
template<class InputIterator, class Distance>
void advance(
InputIterator& InIt,
Distance Off
);
Paramètres
InIt
Itérateur qui doit être incrémenté et qui doit être conforme aux spécifications d'un itérateur d'entrée.Off
Type intégral pouvant être converti en type de différence de l'itérateur et qui spécifie le nombre d'incréments dont la position de l'itérateur doit être avancée.
Notes
La plage d'avance ne doit pas être singulière, là où les itérateurs doivent pouvoir être déréférencés ou au-delà de la fin.
Si InputIterator est conforme aux spécifications d'un type d'itérateur bidirectionnel, Off peut être négatif. Si InputIterator est un type d'itérateur d'entrée ou d'avance, Off ne doit pas être négatif.
La fonction d'avance a une complexité constante lorsque InputIterator est conforme aux spécifications d'un itérateur d'accès aléatoire ; dans le cas contraire, elle a une complexité linéaire et s'avère donc potentiellement coûteuse.
Exemple
// 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;
}
Configuration requise
En-tête : <iterator>
Espace de noms : std