Partilhar via


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.
baseC++20 Obtenha uma referência ao intervalo subjacente.
beginC++20 Obtenha um iterador para o primeiro elemento.
dataC++20 Obtenha um ponteiro para o primeiro elemento no intervalo referenciado.
emptyC++20 Teste se está ref_view vazio.
endC++20 Pegue o sentinela no final deste ref_view.
sizeC++20 Obtenha o número de elementos. O intervalo subjacente deve satisfazer sized_range.
Herdado de view_interface Descrição
backC++20 Obtenha o último elemento.
frontC++20 Obtenha o primeiro elemento.
operator[]C++20 Obter o elemento na posição especificada.
operator boolC++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.

Imagem de um vetor com os elementos 10, 20 e 30. O primeiro elemento contém 10 e é rotulado begin(). O último elemento contém 30 e é rotulado como 'último elemento'. Uma caixa imaginária após o último elemento indica o sentinela e é rotulada como end().

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:

Imagem de um vetor com os elementos 10, 20 e 30. O primeiro elemento contém 10 e é rotulado begin(). O último elemento contém 30 e é rotulado como 'último elemento'. Uma caixa imaginária após o último elemento indica o sentinela e é rotulada como end().

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.

Confira também

<ranges>
all adaptador de gama
Ver aulas