Aracılığıyla paylaş


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

Aralıktaki her tanımlama grubu benzeri değerde seçili dizindeki öğelerin görünümü. Örneğin, bir aralığı std::tuple<string, int>göz önünde bulundurulduğunda, her tanımlama grubundaki string öğelerden oluşan bir görünüm oluşturun.

Sözdizimi

template<input_range V, size_t N>
class elements_view : public view_interface<elements_view<V, N>>;

Şablon parametreleri

N
Görünüm için seçecek öğenin dizini.

V
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::elements
Temel alınan aralık Veya üzerini karşılaması input_range gerekir
Öğe türü Dizine alınan tanımlama grubu öğesinin türüyle aynı
Yineleyici kategoriyi görüntüleme forward_range, bidirectional_range veya random_access_range
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

Üye işlevleri Açıklama
OluşturucularC++20 oluşturma elements_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 Bu görünümdeki öğ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 elements_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 elements_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 elements_view kullanabileceğiniz tanımlama grubu benzeri türler , std::tupleve std::pair'lerdirstd::array.

Oluşturucular

bir örneğini elements_viewoluşturun.

1) constexpr elements_view(V base);
2) elements_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 elements_view örnek.

Açıklamalar

Oluşturmanın elements_view en iyi yolu, aralık bağdaştırıcısını elements 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 elements_view oluşturun.
2) Varsayılan olarak bir elements_viewoluşturur.

Örnek: elements_view

// requires /std:c++20 or later
#include <array>
#include <iostream>
#include <map>
#include <ranges>
#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}
    };

    // create an elements_view of all the string elements (<1>) from each tuple
    for (int const year : std::views::elements<1>(cpp_standards))
    {
        std::cout << year << ' '; // 2003 2011 2014 2017 1988 2020
    }

    std::cout << '\n';

    // Another way to call the range adaptor using pipe (|) syntax
    for (auto&& name : cpp_standards | std::views::elements<0>)
    {
        std::cout << name << ' '; // C++03 C++11 C++14 C++17 C++98 C++20
    }
    std::cout << '\n';

    // ========== working with arrays

    std::array<std::array<int, 4>, 3> arr = { {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}} };
    for (int& fourth : arr | std::views::elements<3>)
    {
        std::cout << fourth << ' '; // 3 7 11
    }
    std::cout << '\n';

    // ========== work with a 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 98", 1998},
        {"Windows 2000", 2000}
    };

    for (int year : std::views::elements<1>(windows))
    {
        std::cout << year << ' '; // 1985 1987 1990 1992 1993 1995 1996 1998 2000
    }
}
2003 2011 2014 2017 1988 2020
C++03 C++11 C++14 C++17 C++98 c++20
3 7 11
1985 1987 1990 1992 1993 1995 1996 1998 2000

base

Temel alınan aralığın bir kopyasını alır.

// Uses a copy constructor to return the underlying range
constexpr V base() const& requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying range
constexpr V base() &&;

Parametreler

Hiçbiri.

Dönüş değeri

Temel alınan aralık.

begin

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

1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires range<const V>;

Parametreler

Hiçbiri.

Dönüş değeri

içindeki ilk öğeye elements_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 elements_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 elements_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

Görünümdeki öğ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 elements_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.

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