ref_view
classe (bibliothèque standard C++)
Vue qui référence les éléments appartenant à une autre plage.
Syntaxe
template<std::ranges::range R>
requires std::is_object_v<R>
class ref_view : public ranges::view_interface<ref_view<R>>;
Paramètres de modèle
R
Plage à référencer.
Membres
Fonctions membres | Description |
---|---|
Constructeurs C++20 | Construisez un ref_view . |
base C++20 |
Obtenez une référence à la plage sous-jacente. |
begin C++20 |
Obtenez un itérateur au premier élément. |
data C++20 |
Obtenez un pointeur vers le premier élément de la plage référencée. |
empty C++20 |
Vérifiez si cela ref_view est vide. |
end C++20 |
Obtenez la sentinelle à la fin de ce ref_view . |
size C++20 |
Obtenez le nombre d’éléments. La plage sous-jacente doit satisfaire sized_range . |
Hérité de view_interface |
Description |
back C++20 |
Obtenez le dernier élément. |
front C++20 |
Obtenez le premier élément. |
operator[] C++20 |
Obtenez l’élément à la position spécifiée. |
operator bool C++20 |
Testez si ce ref_view n’est pas vide. |
Afficher les caractéristiques
Pour obtenir une description des entrées suivantes, consultez les caractéristiques de classe View
Caractéristique | Description |
---|---|
Adaptateur de plage | views::all ou views::common |
Plage sous-jacente | Doit satisfaire input_range |
Type d’élément | Identique à la plage sous-jacente |
Afficher la catégorie d’itérateur | Identique à la plage sous-jacente |
Taille | Uniquement si la plage sous-jacente satisfait sized_range |
Est const -itérable |
Oui |
Plage commune | Uniquement si la plage sous-jacente satisfait common_range |
Plage empruntée | Oui |
Spécifications
En-tête : <ranges>
(depuis C++20)
Espace de noms : std::ranges
Option du compilateur : /std:c++20
ou version ultérieure est requise.
Constructeurs
Construire une instance d’un ref_view
// construct a ref_view from a range
template<different-from<ref_view> R>
constexpr ref_view(R&& rg);
Paramètres
rg
Plage à référencer.
Pour plus d’informations sur le type de paramètre de modèle, consultez Paramètres de modèle.
Valeur retournée
Instance de ref_view
.
Notes
La meilleure façon de créer un ref_view
est d’utiliser l’adaptateur views::all
de plage. Les adaptateurs de plage sont la méthode prévue pour créer des classes d’affichage. Les types d’affichage sont exposés au cas où vous souhaitez créer votre propre type d’affichage personnalisé.
Il ref_view
est utile de convertir un conteneur en vue. Par exemple, vous pouvez utiliser ref_view
pour convertir un vector
affichage, ce qui rend peu coûteux de passer les éléments du vecteur autour.
Exemple : ref_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v = {1,2,3};
auto refView = std::views::all(v);
std::cout << &refView[1] << " : " << &v[1]; // outputs two identical memory addresses, e.g. 00000239AFAFDF90 : 00000239AFAFDF90
refView[0] = 10; // modifies v[0]
std::cout << "\n" << v[0]; // 10
}
00000239AFAFDF90 : 00000239AFAFDF90
10
base
Obtient une copie de la plage sous-jacente.
constexpr R& base() const;
Paramètres
Aucune.
Valeur retournée
Plage sous-jacente.
begin
Obtenez un itérateur au premier élément du ref_view
.
constexpr iterator_t<R> begin() const;
Paramètres
Aucune.
Valeur retournée
Itérateur pointant vers le premier élément de ce ref_view
.
data
Obtenez un pointeur vers le premier élément de ce ref_view
. Les éléments de la plage doivent être contigus.
constexpr auto data() const requires contiguous_range<R>;
Paramètres
Aucune.
Valeur retournée
Pointeur vers le premier élément.
empty
Vérifiez si cela ref_view
est vide.
constexpr bool empty() const
Paramètres
Aucune.
Valeur retournée
Retourne true
si le ref_view
fichier ne contient aucun élément. Sinon, false
.
end
Obtenez la sentinelle à la fin de ce ref_view
.
constexpr sentinel_t<R> end() const
Valeur retournée
Sentinel qui suit le dernier élément de ce qui suit ref_view
:
size
Obtenez le nombre d’éléments.
constexpr auto size() const requires sized_range<R>
Paramètres
Aucune.
Valeur retournée
Nombre d'éléments dans ref_view
.