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 . |
base C++20 |
Obtenha o intervalo subjacente. |
begin C++20 |
Obtenha um iterador para o primeiro elemento. |
end C++20 |
Pegue a sentinela no final da vista. |
size C++20 |
Obtenha o número de elementos. O intervalo subjacente deve satisfazer sized_range . |
Herdado de view_interface |
Descrição |
back C++20 |
Obtenha o último elemento. |
empty C++20 |
Testar se o keys_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 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::pair
e std::array
.
Construtores
Construa uma instância de um keys_view
arquivo .
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
.
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
:
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.