Namespaces
Variants

std::ranges:: cend

From cppreference.net
Ranges library
Range adaptors
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 de point de personnalisation)
Signature d'appel
template < class T >

requires /* voir ci-dessous */

constexpr /* voir ci-dessous */ auto cend ( T && t ) ;
(depuis C++20)

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

range-begin-end.svg

Soit CT défini comme

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

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

(jusqu'à C++23)

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

Dans tous les autres cas, un appel à ranges::cend est mal formé, ce qui peut entraîner une é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 s'il 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)