Compartilhar via


Classe single_view (Biblioteca Padrão C++)

Uma exibição que tem apenas um elemento. Essa exibição é útil para fins de teste para chamar o código que precisa ser fornecido com uma exibição com pelo menos um elemento.

Sintaxe

template<std::copy_constructible T>
  requires std::is_object_v<T>
class single_view : public ranges::view_interface<single_view<T>>

Parâmetros de modelo

T
O tipo do elemento.

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::single
Intervalo subjacente Nenhum
Tipo de elemento Especificado quando o single_view é criado
Exibir categoria do iterador contiguous_range
Tamanho Sempre retorna 1
É const-iterável Sim
Faixa comum Sim
Alcance emprestado Não

Membros

Funções de membro Descrição
ConstrutoresC++20 Construa um single_view.
beginC++20 Obtenha um iterador para o elemento.
dataC++20 Obtenha um ponteiro para o elemento.
endC++20 Pegue a sentinela no final da vista.
sizeC++20 Obtenha o número de elementos. Sempre retorna 1.
Herdado de view_interface Descrição
backC++20 Obtenha o elemento.
emptyC++20 Teste se a exibição está vazia (sempre retorna false).
frontC++20 Obtenha o elemento.
operator[]C++20 Obtenha o elemento na posição especificada (somente a posição 0 é válida).
operator boolC++20 Teste se a exibição não está vazia (sempre retorna false).

Comentários

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

O valor no single_view pode ser modificado, a menos que o valor do modelo seja const. Por exemplo: single_view<const float> sv{3.14} // this value can't be modified because it's const.

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 single_view.

1) single_view() = default;
2) constexpr explicit single_view(const T& t);
3) constexpr explicit single_view(T&& t);
4) template<class... Args>
        requires constructible_from<T, Args...>
    constexpr single_view(in_place_t, Args&&... args);

Parâmetros

t
O valor do elemento.

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

Comentários

A melhor maneira de criar um single_view é usando o adaptador de views::single intervalo.

1) Crie um single_view com um único elemento do tipo especificado que é construído por padrão. Por exemplo, single_view<float> sv{} cria um single_view com um único elemento do tipo float que é construído por padrão para 0.0.
2) Crie um single_view com um único elemento do tipo especificado que é inicializado por cópia do argumento especificado. Por exemplo, single_view<myObjectType> sv{myObject} cria um single_view com um único elemento do tipo myObjectType que é inicializado por cópia do argumento.
3) Crie um single_view com um único elemento do tipo especificado que é inicializado por movimento a partir do argumento.
4) Crie um single_view com um único elemento do tipo especificado inicializado com (std::forward<Args>(args)...).

Exemplo single_view

/// requires /std:c++20 or higher
#include <ranges>
#include <iostream>
#include <string>
#include <tuple>

int main()
{
    std::ranges::single_view<int> sv{7};
    std::cout << sv.front() << " " << *sv.data() << "\n"; // 7 7

    std::ranges::single_view<std::tuple<int, std::string>> sv2{{6502, "8-bit"}};
    std::cout << std::get<0>(sv2[0]) << " " << std::get<1>(sv2[0]) << "\n"; // 6502 8-bit
}
7 7
6502 8-bit

begin

Obtenha um ponteiro para o elemento único na exibição.

constexpr T* begin() noexcept;
constexpr const T* begin() const noexcept;

Parâmetros

Nenhum.

Valor retornado

Um ponteiro para o único elemento dentro do single_view.

data

Obtenha um ponteiro para o elemento único no single_view.

constexpr T* data() noexcept;
constexpr const T* data() const noexcept;

Parâmetros

Nenhum.

Valor retornado

Um ponteiro para o elemento no single_view.

end

Obtém um ponteiro para o sentinela após o elemento.

constexpr T* end() noexcept;
constexpr const T* end() const noexcept;

Parâmetros

Nenhum.

Valor retornado

Um ponteiro para a sentinela que segue o elemento.

size

Obtenha o número de elementos na exibição. Sempre retorna 1.

static constexpr size_t size() noexcept;

Parâmetros

Nenhum.

Valor retornado

1

Confira também

<ranges>
single adaptador de gama
empty_view
Ver aulas