Classe ref_view
(Biblioteca Padrão C++)
Uma exibição que faz referência aos elementos que pertencem a outro intervalo.
Sintaxe
template<std::ranges::range R>
requires std::is_object_v<R>
class ref_view : public ranges::view_interface<ref_view<R>>;
Parâmetros de modelo
R
O intervalo a ser referenciado.
Membros
Funções de membro | Descrição |
---|---|
ConstrutoresC++20 | Construa um ref_view . |
base C++20 |
Obtenha uma referência ao intervalo subjacente. |
begin C++20 |
Obtenha um iterador para o primeiro elemento. |
data C++20 |
Obtenha um ponteiro para o primeiro elemento no intervalo referenciado. |
empty C++20 |
Teste se está ref_view vazio. |
end C++20 |
Pegue o sentinela no final deste ref_view . |
size C++20 |
Obtenha o número de elementos. O intervalo subjacente deve satisfazer sized_range . |
Herdado de view_interface |
Descrição |
back C++20 |
Obtenha o último elemento. |
front C++20 |
Obtenha o primeiro elemento. |
operator[] C++20 |
Obter o elemento na posição especificada. |
operator bool C++20 |
Teste se isso ref_view não está vazio. |
Ver características
Para obter uma descrição das entradas a seguir, consulte Exibir características da classe
Característica | Descrição |
---|---|
Adaptador de gama | views::all ou views::common |
Intervalo subjacente | Deve satisfazer input_range |
Tipo de elemento | O mesmo que o intervalo subjacente |
Exibir categoria do iterador | O mesmo que o intervalo subjacente |
Tamanho | Somente se o intervalo subjacente satisfizer sized_range |
É const -iterável |
Sim |
Faixa comum | Somente se o intervalo subjacente satisfizer common_range |
Alcance emprestado | Sim |
Requisitos
Cabeçalho: <ranges>
(desde C++20)
Namespace: std::ranges
Opção do compilador: /std:c++20
ou posterior é necessária.
Construtores
Construir uma instância de um ref_view
// construct a ref_view from a range
template<different-from<ref_view> R>
constexpr ref_view(R&& rg);
Parâmetros
rg
O intervalo a ser referenciado.
Para obter informações sobre o tipo de parâmetro de modelo, consulte Parâmetros de modelo.
Valor retornado
Uma instância de ref_view
.
Comentários
A melhor maneira de criar um ref_view
é usando o adaptador de views::all
intervalo. Os adaptadores de intervalo são a maneira pretendida de criar classes de exibição. Os tipos de exibição são expostos caso você queira criar seu próprio tipo de exibição personalizado.
A ref_view
é útil para converter um contêiner em uma exibição. Por exemplo, você pode usar ref_view
para converter a vector
em uma exibição, o que torna barato passar os elementos do vetor.
Exemplo: 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
Obtém uma cópia do intervalo subjacente.
constexpr R& base() const;
Parâmetros
Nenhum.
Valor retornado
O intervalo subjacente.
begin
Obtenha um iterador para o primeiro elemento no ref_view
.
constexpr iterator_t<R> begin() const;
Parâmetros
Nenhum.
Valor retornado
Um iterador apontando para o primeiro elemento neste ref_view
.
data
Obtenha um ponteiro para o primeiro elemento neste ref_view
. Os elementos no intervalo devem ser contíguos.
constexpr auto data() const requires contiguous_range<R>;
Parâmetros
Nenhum.
Valor retornado
Um ponteiro para o primeiro elemento.
empty
Teste se está ref_view
vazio.
constexpr bool empty() const
Parâmetros
Nenhum.
Valor retornado
Retorna true
se o ref_view
não contiver elementos. Caso contrário, false
.
end
Pegue o sentinela no final deste ref_view
.
constexpr sentinel_t<R> end() const
Valor retornado
A sentinela que segue o último elemento neste ref_view
:
size
Obtenha o número de elementos.
constexpr auto size() const requires sized_range<R>
Parâmetros
Nenhum.
Valor retornado
O número de elementos em ref_view
.