Compartilhar via


Classe common_view (Biblioteca Padrão C++)

Pegue um intervalo que pode ter diferentes tipos de iterador e sentinela e crie uma exibição que tenha o mesmo tipo de iterador e sentinela. Isso é útil para chamar algoritmos STL que aceitam intervalos especificados por pares de iteradores.

Sintaxe

template<ranges::view V>
    requires (!ranges::common_range<V> && std::copyable<ranges::iterator_t<V>>)
class common_view : public ranges::view_interface<common_view<V>>;

Parâmetros de modelo

V
O tipo da exibição subjacente.

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::common
Intervalo subjacente Deve satisfazer forward_range ou superior
Tipo de elemento O mesmo que o intervalo subjacente
Exibir categoria do iterador forward_range ou random_access_range quando o intervalo subjacente satisfaz random_access_range e sized_range
Tamanho Somente se o intervalo subjacente satisfizer sized_range
É const-iterável Somente se o intervalo subjacente for const iterável
Faixa comum Sim
Alcance emprestado Somente se o intervalo subjacente satisfizer borrowed_range

Membros

Funções de membro Descrição
ConstrutoresC++20 Construa um common_view.
baseC++20 Obtenha a visão subjacente.
beginC++20 Obtenha um iterador para o primeiro elemento na exibição.
endC++20 Pegue a sentinela no final da vista.
sizeC++20 Obtenha o número de elementos na exibição.
Herdado de view_interface Descrição
backC++20 Obtenha o último elemento.
dataC++20 Obtenha um ponteiro para o primeiro elemento.
emptyC++20 Teste se a exibição está vazia.
frontC++20 Obtenha o primeiro elemento.
operator[]C++20 Obter o elemento na posição especificada.
operator boolC++20 Teste se a exibição não está vazia.

Comentários

A melhor maneira de criar um common_view é usando o adaptador de views::common 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.

Essa exibição é útil para passar um intervalo que tem diferentes tipos de iterador/sentinela para um algoritmo herdado que espera que eles sejam os mesmos.

Requisitos

Cabeçalho: <ranges> (desde C++20)

Namespace: std::ranges

Opção do compilador: /std:c++20 ou posterior é necessária.

Construtores

Crie uma instância de uma common_view.

1) common_view() = default;
2) constexpr explicit common_view(V v);

Parâmetros

v
A visão subjacente.

Para obter informações sobre o tipo de parâmetro de modelo, consulte Parâmetros de modelo.

Comentários

1) O padrão constrói o common_view.
2) Constrói um common_view a partir da visão subjacente usando std::move(v). Um erro resultará se V for um intervalo comum para evitar o uso indevido que afetaria negativamente o desempenho.

base

Obtém uma cópia da exibição subjacente.

// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying view
constexpr V base() &&;

begin

Obtenha um iterador para o primeiro elemento.

constexpr auto begin();
constexpr auto begin() const requires range<const V>;

Valor retornado

Um iterador apontando para o primeiro elemento na exibição:

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().

end

Pegue a sentinela no final da vista.

constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;

Valor retornado

A sentinela que segue o último elemento na exibição:

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 na exibição.

constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

Parâmetros

Nenhum.

Valor retornado

O número de elementos na exibição.

Confira também

<ranges>
common adaptador de gama
Ver aulas