Classe reverse_view
(Biblioteca Padrão C++)
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 . |
base C++20 |
Obtenha o intervalo subjacente. |
begin C++20 |
Obtenha um iterador para o primeiro elemento. |
end C++20 |
Obtenha o sentinela no final do reverse_view arquivo . |
size C++20 |
Obtenha o número de elementos. |
Herdado de view_interface |
Descrição |
back C++20 |
Obtenha o último elemento. |
empty C++20 |
Testar se o reverse_view está vazio. |
front C++20 |
Obtenha o primeiro elemento. |
operator[] C++20 |
Obter o elemento na posição especificada. |
operator bool C++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_view
arquivo .
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.