Partilhar via


keys_view classe (C++ Standard Library)

Uma exibição sobre o primeiro índice em cada valor semelhante a uma tupla em uma coleção. Por exemplo, dado um intervalo de std::tuple<string, int>, crie uma exibição que consiste em todos os string elementos de cada tupla.

keys_view é um alias para elements_view<R, 0> e é útil para fazer a visualização das chaves de contêineres associativos como std::map ou std::unordered_map.

Sintaxe

template<input_range R>
using keys_view = ranges::elements_view<R, 0>;

Parâmetros do modelo

R
O tipo do intervalo subjacente. Este tipo deve satisfazer ranges::input_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::keys
Gama subjacente Deve satisfazer input_range ou superior
Tipo de elemento O mesmo que o tipo do primeiro elemento de tupla do intervalo subjacente
Ver categoria do iterador random_access_range se o intervalo subjacente for contíguo, caso contrário o mesmo que o intervalo subjacente
Tamanho Apenas se o intervalo subjacente satisfizer sized_range
É const-iterável Apenas se o intervalo subjacente satisfizer const-iterable
Gama comum Apenas se o intervalo subjacente satisfizer common_range
Intervalo emprestado Apenas se o intervalo subjacente satisfizer borrowed_range

Membros

A lista a seguir de funções de membro refere-se à keys_view classe. Lembre-se de que este é um alias para uma instanciação de element_view modelo de classe.

Funções de membro Descrição
ConstrutoresC++20 Construa um keys_viewarquivo .
base C++20 Obtenha o intervalo subjacente.
begin C++20 Obtenha um iterador para o primeiro elemento.
end C++20 Obtenha a sentinela no final da vista.
size C++20 Obtenha o número de elementos. A gama subjacente deve satisfazer sized_range.
Herdado de view_interface Descrição
back C++20 Obtenha o último elemento.
empty C++20 Teste se o está keys_view vazio.
front C++20 Obtenha o primeiro elemento.
operator[] C++20 Obtenha o elemento na posição especificada.
operator bool C++20 Teste se o keys_view não está vazio.

Requerimentos

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

Espaço de nomes: std::ranges

Opção do compilador:/std:c++20 ou mais tarde é necessário.

Observações

Os tipos semelhantes a tuplas com os quais você pode usar keys_view são std::tuple, std::pair, e std::array.

Construtores

Construa uma instância de um keys_viewarquivo .

1) constexpr keys_view(V base);
2) keys_view() requires std::default_initializable<V> = default;

Parâmetros

base
O intervalo subjacente.

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

Valor de retorno

Um keys_view exemplo.

Observações

A melhor maneira de criar um keys_view é usando o adaptador de keys 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) Crie um keys_view a partir da visualização especificada.
2) O construtor padrão cria um vazio keys_view.

Exemplo: keys_view

// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <utility>

int main()
{
    // ========== work with a std::map

    std::map<std::string, int> cpp_standards
    {
        {"C++98", 1988},
        {"C++03", 2003},
        {"C++11", 2011},
        {"C++14", 2014},
        {"C++17", 2017},
        {"C++20", 2020}
    };

    // Extract all of the keys from the map
    for (const std::string& standards : std::views::keys(cpp_standards))
    {
        std::cout << standards << ' '; // C++03 C++11 C++14 C++17 C++98 C++20
    }
    std::cout << '\n';

    // ========== work with a range of std::pair

    std::vector<std::pair<std::string, int>> windows
    {
        {"Windows 1.0", 1985},
        {"Windows 2.0", 1987},
        {"Windows 3.0", 1990},
        {"Windows 3.1", 1992},
        {"Windows NT 3.1", 1993},
        {"Windows 95", 1995},
        {"Windows NT 4.0", 1996},
        {"Windows 95", 1995},
        {"Windows 98", 1998},
        {"Windows 1.0", 1985},
        {"Windows 2000", 2000}
    };
    
    // Another way to call the range adaptor using '|': create an keys_view from each pair
    for (const std::string& version : windows | std::views::keys)
    {
        std::cout << version << ' '; // Windows 1.0 Windows 2.0 Windows 3.0 ...
    }
}
C++03 C++11 C++14 C++17 C++98 c++20
Windows 1.0 Windows 2.0 Windows 3.0 Windows 3.1 Windows NT 3.1 Windows 95 Windows NT 4.0 Windows 95 Windows 98 Windows 1.0 Windows 2000

base

Obtém uma cópia do modo de 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 de retorno

A visão subjacente.

begin

Obtenha um iterador para o primeiro elemento no keys_view.

1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires (Simple_view<V>) // or put another way, requires ranges::range<const V>;

Parâmetros

Nenhum.

Valor de retorno

Um iterador apontando para o primeiro elemento no keys_view.

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

end

Obtenha a sentinela no final da seringa keys_view

1) constexpr auto end() requires (!Simple_view<V> && !ranges::common_range<V>);
2) constexpr auto end() requires (!Simple_view<V> && ranges::common_range<V>);
3) constexpr auto end() const requires ranges::range<const V>;
4) constexpr auto end() const requires ranges::common_range<const V>;

Parâmetros

Nenhum.

Valor de retorno

A sentinela que se segue ao último elemento do keys_view:

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

size

Obtenha o número de elementos.

constexpr auto size() requires sized_range<V>
constexpr auto size() const requires sized_range<const V>

Parâmetros

Nenhum.

Valor de retorno

O número de elementos no keys_view.

Observações

O tamanho da vista só está disponível se o intervalo subjacente for um sized_range, ou, por outras palavras, limitado.

Ver também

elements_view
values_view
<ranges>
Ver aulas