Namespaces
Variants

std:: end, std:: cend

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
end cend
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
Défini dans l'en-tête <array>
Défini dans l'en-tête <deque>
Défini dans l'en-tête <flat_map>
Défini dans l'en-tête <flat_set>
Défini dans l'en-tête <forward_list>
Défini dans l'en-tête <inplace_vector>
Défini dans l'en-tête <iterator>
Défini dans l'en-tête <list>
Défini dans l'en-tête <map>
Défini dans l'en-tête <regex>
Défini dans l'en-tête <set>
Défini dans l'en-tête <span>
Défini dans l'en-tête <string>
Défini dans l'en-tête <string_view>
Défini dans l'en-tête <unordered_map>
Défini dans l'en-tête <unordered_set>
Défini dans l'en-tête <vector>
template < class C >
auto end ( C & c ) - > decltype ( c. end ( ) ) ;
(1) (depuis C++11)
(constexpr depuis C++17)
template < class C >
auto end ( const C & c ) - > decltype ( c. end ( ) ) ;
(2) (depuis C++11)
(constexpr depuis C++17)
template < class T, std:: size_t N >
T * end ( T ( & array ) [ N ] ) ;
(3) (depuis C++11)
(noexcept depuis C++14)
(constexpr depuis C++14)
template < class C >

constexpr auto cend ( const C & c ) noexcept ( /* voir ci-dessous */ )

- > decltype ( std :: end ( c ) ) ;
(4) (depuis C++14)

Retourne un itérateur vers la fin (c'est-à-dire l'élément après le dernier élément) de la plage donnée.

1,2) Retourne c. end ( ) , qui est typiquement un itérateur pointant après la fin de la séquence représentée par c .
1) Si C est un Container standard, retourne un objet C::iterator .
2) Si C est un Container standard, retourne un objet C::const_iterator .
3) Retourne un pointeur vers la fin du array .
4) Retourne std :: end ( c ) , en traitant c toujours comme qualifié const.
Si C est un Container standard, retourne un objet C::const_iterator .

range-begin-end.svg

Table des matières

Paramètres

c - un conteneur ou une vue avec une fonction membre end
array - un tableau de type arbitraire

Valeur de retour

1,2) c. end ( )
3) array + N
4) c. end ( )

Exceptions

4)
noexcept spécification :
noexcept ( noexcept ( std :: end ( c ) ) )

Surcharges

Des surcharges personnalisées de end peuvent être fournies pour les classes et les énumérations qui n'exposent pas de fonction membre end() appropriée, mais qui peuvent être parcourues. Les surcharges suivantes sont déjà fournies par la bibliothèque standard :

spécialise std::end
(modèle de fonction)
spécialise std::end
(modèle de fonction)
support de la boucle for basée sur des intervalles
(fonction)
support de la boucle for basée sur des intervalles
(fonction)

Similaire à l'utilisation de swap (décrite dans Swappable ), l'utilisation typique de la fonction end dans un contexte générique équivaut à using std :: end ; end ( arg ) ; , ce qui permet à la fois aux surcharges sélectionnées par ADL pour les types définis par l'utilisateur et aux modèles de fonctions de la bibliothèque standard d'apparaître dans le même ensemble de surcharges.

template<typename Container, typename Function>
void for_each(Container&& cont, Function f)
{
    using std::begin;
    auto it = begin(cont);
    using std::end;
    auto end_it = end(cont);
    for (; it != end_it; ++it)
        f(*it);
}

Les surcharges de end trouvées par la recherche dépendante des arguments peuvent être utilisées pour personnaliser le comportement de std::ranges::end , std::ranges::cend , et d'autres objets de personnalisation dépendant de std::ranges::end .

(depuis C++20)

Notes

Les surcharges non-tableau reflètent exactement le comportement de C :: end ( ) . Leurs effets peuvent être surprenants si la fonction membre n'a pas d'implémentation raisonnable.

std::cend est introduit pour l'unification des accès aux plages membres et non membres. Voir aussi LWG issue 2128 .

Si C est une vue à constance superficielle, std::cend peut renvoyer un itérateur mutable. Ce comportement est inattendu pour certains utilisateurs. Voir également P2276 et P2278 .

Exemple

#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
    std::vector<int> v = {3, 1, 4};
    if (std::find(std::begin(v), std::end(v), 5) != std::end(v))
        std::cout << "Found a 5 in vector v!\n";
    int w[] = {5, 10, 15};
    if (std::find(std::begin(w), std::end(w), 5) != std::end(w))
        std::cout << "Found a 5 in array w!\n";
}

Sortie :

Found a 5 in array w!

Voir aussi

(C++11) (C++14)
retourne un itérateur vers le début d'un conteneur ou d'un tableau
(modèle de fonction)
retourne un sentinelle indiquant la fin d'une plage
(objet de point de personnalisation)
retourne un sentinelle indiquant la fin d'une plage en lecture seule
(objet de point de personnalisation)