Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Classe
Uma exibição dos elementos de um intervalo em ordem inversa.
Sintaxe
template<ranges::view V>
requires ranges::bidirectional_range<V>
class reverse_view : public ranges::view_interface<reverse_view<V>>;
Parâmetros de modelo
V
O tipo da exibição subjacente.
Este tipo deve satisfazer ranges::bidirectional_range.
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::reverse |
| Intervalo subjacente | Deve satisfazer bidirectional_range até random_access_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 |
Somente se o intervalo subjacente for a common_view e satisfizer const-iterable |
| Faixa comum | Sim |
| Alcance emprestado | Somente se o intervalo subjacente satisfizer borrowed_range |
Membros
| Funções de membro | Descrição |
|---|---|
| ConstrutoresC++20 | Construa um reverse_view. |
baseC++20 |
Obtenha o intervalo subjacente. |
beginC++20 |
Obtenha um iterador para o primeiro elemento. |
endC++20 |
Obtenha o sentinela no final do reverse_viewarquivo . |
sizeC++20 |
Obtenha o número de elementos. |
Herdado de view_interface |
Descrição |
backC++20 |
Obtenha o último elemento. |
emptyC++20 |
Testar se o reverse_view está vazio. |
frontC++20 |
Obtenha o primeiro elemento. |
operator[]C++20 |
Obter o elemento na posição especificada. |
operator boolC++20 |
Teste se o reverse_view não está vazio. |
Requisitos
Cabeçalho: <ranges> (desde C++20)
Namespace: std::ranges
Opção do compilador: /std:c++20 ou posterior é necessária.
Construtores
Construa uma instância de um reverse_view a partir de uma exibição bidirecional.
1) reverse_view() requires default_initializable<V> = default; // default-constructs the underlying view
2) constexpr explicit reverse_view(V rg); // initializes the underlying view via std::move(r)
Parâmetros
rg
A exibição para fornecer uma visão invertida de.
Para obter informações sobre o tipo de parâmetro de modelo, consulte Parâmetros de modelo.
Valor retornado
Uma exibição do intervalo subjacente, em ordem inversa.
Comentários
A melhor maneira de criar um reverse_view é usando o adaptador de views::reverse 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.
1) O construtor padrão inicializa por padrão um reverse_viewarquivo .
2) Crie um reverse_view a partir da visualização especificada.
Exemplo: reverse_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v{0, 1, 2, 3, -4, 5, 6};
auto rv = v | std::views::reverse;
for (auto e : rv) // 6 5 -4 3 2 1 0
{
std::cout << e << ' ';
}
}
6 5 -4 3 2 1 0
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() &&;
Parâmetros
Nenhum.
Valor retornado
A visão subjacente.
begin
Obtenha um iterador para o primeiro elemento no reverse_view.
1) constexpr reverse_iterator<iterator_t<V>> begin();
2) constexpr reverse_iterator<iterator_t<V>> begin() requires common_range<V>;
3) constexpr auto begin() const requires common_range<const V>;
Parâmetros
Nenhum.
Valor retornado
Um iterador que aponta para o primeiro elemento no reverse_view.
Comentários
Após a primeira chamada para begin(), as chamadas subsequentes são executadas em tempo constante, O(1), não importa quantos elementos estejam no reverse_view. Isso tem implicações porque reverse_view armazena em cache o valor de last para que possa retorná-lo repetidamente de begin. Isso significa que você não deve reutilizar uma exibição depois que o contêiner subjacente for modificado. Se o intervalo subjacente for modificado, gere uma nova exibição, que é barata.
2) A exibição subjacente deve satisfazer common_range, o que significa que a exibição subjacente deve ter o mesmo tipo de iterador de início e fim.
3) A visão subjacente deve satisfazer common_range para que uma visão const itere sobre um const reverse_view.
end
Obtenha a sentinela no final do reverse_view
1) constexpr reverse_iterator<iterator_t<V>> end();
2) constexpr auto end() const requires common_range<const V>;
Parâmetros
Nenhum.
Valor retornado
A sentinela que segue o último elemento no reverse_view.
Comentários
Para 2, a exibição subjacente deve atender common_range a uma exibição const, o que significa que a exibição subjacente deve ter o mesmo tipo de iterador de início e fim.
size
Obtenha o número de elementos.
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 em reverse_view.
Comentários
O tamanho da exibição só estará disponível se o intervalo subjacente for um sized_range, ou em outras palavras, limitado.