Aracılığıyla paylaş


keys_view class (C++ Standart Kitaplığı)

Bir koleksiyondaki her tanımlama grubu benzeri değere ilk dizin üzerinden bir görünüm. Örneğin, bir aralığı std::tuple<string, int>göz önünde bulundurulduğunda, her bir tanımlama grubundaki string tüm öğeleri içeren bir görünüm oluşturun.

keys_viewiçin bir diğer addır elements_view<R, 0> ve veya std::mapgibi std::unordered_map ilişkilendirici kapsayıcılardan anahtarların görünümünü oluşturmak için yararlıdır.

Sözdizimi

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

Şablon parametreleri

R
Temel alınan aralığın türü. Bu tür karşılamalıdır ranges::input_range.

Özellikleri görüntüleme

Aşağıdaki girdilerin açıklaması için bkz . Sınıf özelliklerini görüntüleme

Karakteristik Açıklama
Aralık bağdaştırıcısı views::keys
Temel alınan aralık Veya üzerini karşılaması input_range gerekir
Öğe türü Temel alınan aralığın ilk tanımlama grubu öğesinin türüyle aynı
Yineleyici kategoriyi görüntüleme random_access_range temel alınan aralık bitişikse, aksi takdirde temel alınan aralıkla aynı
Boyutlu Yalnızca temel alınan aralık karşılanırsa sized_range
- constyinelenebilir Yalnızca temel alınan aralık karşılanırsa const-iterable
Ortak aralık Yalnızca temel alınan aralık karşılanırsa common_range
Ödünç alınan aralık Yalnızca temel alınan aralık karşılanırsa borrowed_range

Üyeler

Aşağıdaki üye işlevleri listesi sınıfına başvurur keys_view . Bunun bir sınıf şablonu örneği oluşturma için diğer element_view ad olduğunu hatırlayın.

Üye işlevleri Açıklama
OluşturucularC++20 oluşturma keys_view.
base C++20 Temel alınan aralığı alın.
begin C++20 İlk öğeye bir yineleyici alın.
end C++20 Görünümün sonunda sentinel'i alın.
size C++20 Öğe sayısını alın. Temel alınan aralığın karşılaması sized_rangegerekir.
Devralınan view_interface Açıklama
back C++20 Son öğeyi alın.
empty C++20 öğesinin keys_view boş olup olmadığını test edin.
front C++20 İlk öğeyi alın.
operator[] C++20 Öğesini belirtilen konumda alın.
operator bool C++20 öğesinin keys_view boş olup olmadığını test edin.

Gereksinimler

Üst bilgi:<ranges> (C++20'den beri)

Ad alanı: std::ranges

Derleyici Seçeneği:/std:c++20 veya üzeri gereklidir.

Açıklamalar

Birlikte keys_view kullanabileceğiniz tanımlama grubu benzeri türler , std::tupleve std::pair'lerdirstd::array.

Oluşturucular

bir örneğini keys_viewoluşturun.

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

Parametreler

base
Temel alınan aralık.

Şablon parametre türü hakkında bilgi için bkz . Şablon parametreleri.

Dönüş değeri

Bir keys_view örnek.

Açıklamalar

Oluşturmanın keys_view en iyi yolu, aralık bağdaştırıcısını keys kullanmaktır. Aralık bağdaştırıcıları, görünüm sınıfları oluşturmanın amaçlanan yoludur. Kendi özel görünüm türünüzü oluşturmak istemeniz durumunda görünüm türleri kullanıma sunulur.

1) Belirtilen görünümden bir keys_view oluşturun.
2) Varsayılan oluşturucu boş keys_viewbir oluşturur.

Örnek: 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

Temel alınan görünümün bir kopyasını alır.

// 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() &&;

Parametreler

Hiçbiri.

Dönüş değeri

Temel alınan görünüm.

begin

içindeki ilk öğeye keys_viewbir yineleyici alın.

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>;

Parametreler

Hiçbiri.

Dönüş değeri

içindeki ilk öğeye keys_viewişaret eden bir yineleyici.

10, 20 ve 30 öğelerini içeren bir vektör resmi. İlk öğe 10 içerir ve begin() olarak etiketlenir. Son öğe 30 içerir ve 'son öğe' olarak etiketlenmiştir. Son öğeden sonraki bir sanal kutu sentinel'i gösterir ve end() olarak etiketlenmiştir.

end

Sentinel'i 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>;

Parametreler

Hiçbiri.

Dönüş değeri

içindeki son öğeyi keys_viewizleyen sentinel:

10, 20 ve 30 öğelerini içeren bir vektör resmi. İlk öğe 10 içerir ve begin() olarak etiketlenir. Son öğe 30 içerir ve 'son öğe' olarak etiketlenmiştir. Son öğeden sonraki bir sanal kutu sentinel'i gösterir ve end() olarak etiketlenmiştir.

size

Öğe sayısını alın.

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

Parametreler

Hiçbiri.

Dönüş değeri

içindeki keys_viewöğe sayısı.

Açıklamalar

Görünümün boyutu yalnızca temel alınan aralık bir ise veya başka bir sized_rangedeyişle sınırlanmışsa kullanılabilir.

Ayrıca bkz.

elements_view
values_view
<ranges>
Sınıfları görüntüleme