Namespaces
Variants

std::ranges::cend

De fr.cppreference.net
 
 
Bibliothèque ranges
Adaptateurs d'intervalles
 
Défini dans l'en-tête <ranges>
Défini dans l'en-tête <iterator>
inline namespace /* unspecified */ {
    inline constexpr /* unspecified */ cend = /* unspecified */;
}
(depuis C++20)
(objet point de personnalisation)
Signature d'appel
template< class T >
    requires /* see below */
constexpr /* see below */ auto cend( T&& t );
(depuis C++20)

Retourne une sentinelle pour l'itérateur constant(depuis C++23) indiquant la fin d'un intervalle qualifié const(jusqu'à C++23).

Soit CT soit

  • const std::remove_reference_t<T>& si l'argument est une valeur gauche (c.-à-d. T est un type de référence à valeur gauche),
  • const T sinon.

Un appel à ranges::cend est équivalent en expression à ranges::end(static_cast<CT&&>(t)).

(jusqu'à C++23)

Si l'argument est une valeur gauche ou ranges::enable_borrowed_range<std::remove_cv_t<T>> est true, alors un appel à ranges::cend est équivalent en expression à:

  • std::const_sentinel<decltype(U)>(U) pour une expression U équivalente à ranges::end(possibly-const-range(t)).

Dans tous les autres cas, un appel à ranges::cend est mal formé, ce qui peut entraîner un échec de substitution lorsque l'appel apparaît dans le contexte immédiat d'une instanciation de modèle.

(depuis C++23)

Si ranges::cend(e) est valide pour une expression e, où decltype((e)) est T, alors CT modélise std::ranges::range, et(jusqu'à C++23) std::sentinel_for<S, I> est true dans tous les cas, où S est decltype(ranges::cend(e)), et I est decltype(ranges::cbegin(e)). De plus, S modélise constant-iterator si elle modélise input_iterator.(depuis C++23)

Objets de point de personnalisation

Le nom ranges::cend désigne un objet de point de personnalisation , qui est un objet fonction constant de type classe littéral semiregular . Voir CustomizationPointObject pour plus de détails.

Exemple

#include <algorithm>
#include <cassert>
#include <ranges>
#include <vector>
int main()
{
    std::vector vec{3, 1, 4};
    int arr[]{5, 10, 15};
    assert(std::ranges::find(vec, 5) == std::ranges::cend(vec));
    assert(std::ranges::find(arr, 5) != std::ranges::cend(arr));
}

Voir aussi

retourne un sentinelle indiquant la fin d'une plage
(objet de point de personnalisation)
(C++11) (C++14)
retourne un itérateur vers la fin d'un conteneur ou d'un tableau
(fonction template)