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 . |
begin C++20 |
Obtenha um iterador para o elemento. |
data C++20 |
Obtenha um ponteiro para o elemento. |
end C++20 |
Pegue a sentinela no final da vista. |
size C++20 |
Obtenha o número de elementos. Sempre retorna 1 . |
Herdado de view_interface |
Descrição |
back C++20 |
Obtenha o elemento. |
empty C++20 |
Teste se a exibição está vazia (sempre retorna false ). |
front C++20 |
Obtenha o elemento. |
operator[] C++20 |
Obtenha o elemento na posição especificada (somente a posição 0 é válida). |
operator bool C++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