Traductions de cette page?:

end

Syntaxe :

    #include <vector>
    iterator end();
    const_iterator end() const;

La méthode end() retourne un itérateur situé après le dernier élément du vecteur. L'itérateur retourné par end() doit donc être décrémenté pour pouvoir être déréférencé. En effet, end() ne désigne pas un élément du vecteur mais bien la position juste après la fin de celui-ci. Pour accéder directement au dernier élément d'un vecteur, il vaut mieux utiliser back().

Par exemple, dans le code suivant, le premier cout va afficher du bruit (voire fera planter le programme, si le compilateur est configuré pour vérifier l'utilisation des itérateurs), alors que le second affichera le dernier élément du vecteur.

    vector<int> v1;
    v1.push_back( 0 );
    v1.push_back( 1 );
    v1.push_back( 2 );
    v1.push_back( 3 );
 
    int bad_val = *(v1.end());
    cout << "Pas bon : " << bad_val << endl;
 
    int good_val = *(v1.end() - 1);
    cout << "Bon : " << good_val << endl;

L'exemple suivant montre comment utiliser begin() et end() pour parcourir les éléments d'un vecteur :

    vector<int> v1( 3, 5 );
    vector<int>::iterator it;
    for( it = v1.begin(); it != v1.end(); it++ ) {
      cout << *it << endl;
    }

L'itérateur est initialisé grâce à begin(). Il est incrémenté après le corps de la boucle et comparé à celui retourné par end(). Comme end() retourne un itérateur juste après le vecteur, la boucle va s'arrêter dès que tous les éléments auront été parcourus, y compris le dernier.

end() est de complexité algorithmique constante.

Sujets connexes : back, begin, rbegin, rend