Partilhar via


Classe keys_view (Biblioteca Padrão C++)

Uma exibição sobre o primeiro índice em cada valor semelhante a 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 de 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
Intervalo subjacente Deve satisfazer input_range ou superior
Tipo de elemento O mesmo que o tipo do primeiro elemento de tupla do intervalo subjacente
Exibir categoria do iterador random_access_range se o intervalo subjacente for contíguo, caso contrário, o mesmo que o intervalo subjacente
Tamanho Somente se o intervalo subjacente satisfizer sized_range
É const-iterável Somente se o intervalo subjacente satisfizer const-iterable
Faixa comum Somente se o intervalo subjacente satisfizer common_range
Alcance emprestado Somente se o intervalo subjacente satisfizer borrowed_range

Membros

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

Funções de membro Descrição
ConstrutoresC++20 Construa um keys_view.
baseC++20 Obtenha o intervalo subjacente.
beginC++20 Obtenha um iterador para o primeiro elemento.
endC++20 Pegue a sentinela no final da vista.
sizeC++20 Obtenha o número de elementos. O intervalo subjacente deve satisfazer sized_range.
Herdado de view_interface Descrição
backC++20 Obtenha o último elemento.
emptyC++20 Testar se o keys_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 keys_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.

Comentários

Os tipos semelhantes a tuplas que você pode usar são keys_view std::tuple, std::paire 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 retornado

Uma instância de keys_view.

Comentários

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

Um iterador que aponta 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 'último elemento'. Uma caixa imaginária após o último elemento indica o sentinela e é rotulada como end().

end

Obtenha a sentinela no final do 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 retornado

A sentinela que segue o último 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 'último elemento'. Uma caixa imaginária após o último elemento indica o sentinela e é rotulada como end().

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 retornado

O número de elementos em keys_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.

Confira também

elements_view
values_view
<ranges>
Ver aulas