Namespaces
Variants

std::ranges:: views:: as_const, std::ranges:: as_const_view

From cppreference.net
Ranges library
Range adaptors
Défini dans l'en-tête <ranges>
template < ranges:: view V >

requires ranges:: input_range < V >
class as_const_view

: public ranges:: view_interface < as_const_view < V >>
(1) (depuis C++23)
namespace views {

inline constexpr /* non spécifié */ as_const = /* non spécifié */ ;

}
(2) (depuis C++23)
Signature d'appel
template < ranges:: viewable_range R >

requires /* voir ci-dessous */

constexpr ranges:: view auto as_const ( R && r ) ;
(depuis C++23)
1) Un adaptateur de gamme qui représente une vue du view sous-jacent qui est également un constant_range . Un as_const_view possède toujours des éléments en lecture seule (s'il n'est pas vide).
2) RangeAdaptorObject . Soit e une sous-expression, soit T le type decltype ( ( e ) ) , et soit U le type std:: remove_cvref_t < T > . Alors l'expression views :: as_const ( e ) est équivalente-expression à :

as_const_view modélise toujours constant_range , et il modélise le contiguous_range , random_access_range , bidirectional_range , forward_range , borrowed_range , common_range , et sized_range lorsque la vue sous-jacente V modélise les concepts respectifs.

Table des matières

Membres de données

Membre Description
V base_ (privé) la vue sous-jacente
( objet membre d'exposition uniquement* )

Fonctions membres

construit un as_const_view
(fonction membre publique)
retourne la vue sous-jacente V
(fonction membre publique)
retourne l'itérateur de début du as_const_view
(fonction membre publique)
retourne l'itérateur de fin du as_const_view
(fonction membre publique)
retourne la taille de la vue si elle est bornée
(fonction membre publique)
retourne la taille approximative du approximately_sized_range sous-jacent
(fonction membre publique)
Hérité de std::ranges::view_interface
indique si la vue dérivée est vide, fourni uniquement si elle satisfait sized_range ou forward_range
(fonction membre publique de std::ranges::view_interface<D> )
(C++23)
retourne un itérateur constant vers le début de la plage
(fonction membre publique de std::ranges::view_interface<D> )
(C++23)
retourne un sentinelle pour l'itérateur constant de la plage
(fonction membre publique de std::ranges::view_interface<D> )
indique si la vue dérivée n'est pas vide, fourni uniquement si ranges::empty lui est applicable
(fonction membre publique de std::ranges::view_interface<D> )
obtient l'adresse des données de la vue dérivée, fourni uniquement si son type d'itérateur satisfait contiguous_iterator
(fonction membre publique de std::ranges::view_interface<D> )
retourne le premier élément de la vue dérivée, fourni si elle satisfait forward_range
(fonction membre publique de std::ranges::view_interface<D> )
retourne le dernier élément de la vue dérivée, fourni uniquement si elle satisfait bidirectional_range et common_range
(fonction membre publique de std::ranges::view_interface<D> )
retourne le n ème élément de la vue dérivée, fourni uniquement si elle satisfait random_access_range
(fonction membre publique de std::ranges::view_interface<D> )

std::ranges::as_const_view:: as_const_view

as_const_view ( ) requires std:: default_initializable < V > = default ;
(1) (since C++23)
constexpr explicit as_const_view ( V base ) ;
(2) (since C++23)
1) Initialise la valeur de base_  via son initialiseur de membre par défaut ( = V ( ) ).
2) Initialise base_  avec std :: move ( base ) .

Paramètres

base - une vue

std::ranges::as_const_view:: base

constexpr V base ( ) const & requires std:: copy_constructible < V > ;
(1) (since C++23)
constexpr V base ( ) && ;
(2) (since C++23)

Retourne la vue sous-jacente.

1) Construit par copie le résultat à partir de la vue sous-jacente. Équivalent à return base_  ; .
2) Construit par déplacement le résultat à partir de la vue sous-jacente. Équivalent à return std :: move ( base_  ) ; .

std::ranges::as_const_view:: begin

constexpr auto begin ( ) requires ( ! /*simple_view*/ < V > ) ;
(1) (depuis C++23)
constexpr auto begin ( ) const requires ranges:: range < const V > ;
(2) (depuis C++23)

Retourne l'itérateur constant de la vue. Équivalent à return ranges:: cbegin ( base_  ) ; .

std::ranges::as_const_view:: end

constexpr auto end ( ) requires ( ! /*simple_view*/ < V > ) ;
(1) (depuis C++23)
constexpr auto end ( ) const requires ranges:: range < const V > ;
(2) (depuis C++23)

Retourne le sentinelle constant de la vue. Équivalent à return ranges:: cend ( base_  ) ; .

std::ranges::as_const_view:: size

constexpr auto size ( ) requires ranges:: sized_range < V > ;
(1) (depuis C++23)
constexpr auto size ( ) const requires ranges:: sized_range < const V > ;
(2) (depuis C++23)

Retourne la taille de la vue si celle-ci est bornée. Équivalent à return ranges:: size ( base_  ) ; .

std::ranges::as_rvalue_view:: reserve_hint

constexpr auto reserve_hint ( )
requires ranges :: approximately_sized_range < V > ;
(1) (depuis C++26)
constexpr auto reserve_hint ( ) const
requires ranges :: approximately_sized_range < const V > ;
(2) (depuis C++26)

Retourne ranges :: reserve_hint ( base_  ) .

Guides de déduction

template < class R >
as_const_view ( R && ) - > as_const_view < views:: all_t < R >> ;
(depuis C++23)

Modèles d'assistance

template < class T >

constexpr bool enable_borrowed_range < std :: ranges :: as_const_view < T >> =

ranges:: enable_borrowed_range < T > ;
(depuis C++23)

Cette spécialisation de ranges::enable_borrowed_range permet à as_const_view de satisfaire borrowed_range lorsque la vue sous-jacente la satisfait.

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_ranges_as_const 202207L (C++23) ranges::as_const_view , std:: const_iterator
__cpp_lib_ranges_reserve_hint 202502L (C++26) ranges::approximately_sized_range et reserve_hint

Exemple

#include <cassert>
#include <ranges>
int main()
{
    int x[]{1, 2, 3, 4, 5};
    auto v1 = x | std::views::drop(2);
    assert(v1.back() == 5);
    v1[0]++; // OK, peut modifier un élément non-const
    auto v2 = x | std::views::drop(2) | std::views::as_const;
    assert(v2.back() == 5);
    // v2[0]++; // Erreur de compilation, ne peut pas modifier un élément en lecture seule
}

Voir aussi

une view d'une séquence qui convertit chaque élément en rvalue
(modèle de classe) (objet adaptateur de gamme)
retourne un itérateur vers le début d'une gamme en lecture seule
(objet point de personnalisation)
retourne un sentinelle indiquant la fin d'une gamme en lecture seule
(objet point de personnalisation)
(C++17)
obtient une référence const vers son argument
(modèle de fonction)
adaptateur d'itérateur qui convertit un itérateur en itérateur constant
(modèle de classe)