Aracılığıyla paylaş


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

Bir aralığın öğelerinin ters sırada görünümü.

Sözdizimi

template<ranges::view V>
requires ranges::bidirectional_range<V>
class reverse_view : public ranges::view_interface<reverse_view<V>>;

Şablon parametreleri

V
Temel alınan görünümün türü.
Bu tür karşılamalıdır ranges::bidirectional_range.

Özellikleri görüntüleme

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

Characteristic Açıklama
Aralık bağdaştırıcısı views::reverse
Temel alınan aralık bidirectional_range En fazlarandom_access_range
Öğe türü Temel alınan aralıkla aynı
Yineleyici kategoriyi görüntüleme 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 bir common_view ise ve const-iterable
Ortak aralık Yes
Ö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 reverse_view.
baseC++20 Temel alınan aralığı alın.
beginC++20 İlk öğeye bir yineleyici alın.
endC++20 sentinel'i öğesinin sonunda alın reverse_view.
sizeC++20 Öğe sayısını alın.
Devralınan view_interface Açıklama
backC++20 Son öğeyi alın.
emptyC++20 öğesinin reverse_view boş olup olmadığını test edin.
frontC++20 İlk öğeyi alın.
operator[]C++20 Öğesini belirtilen konumda alın.
operator boolC++20 öğesinin reverse_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.

Oluşturucular

Çift yönlü görünümden bir reverse_view örneğini oluşturun.

1) reverse_view() requires default_initializable<V> = default; // default-constructs the underlying view
2) constexpr explicit reverse_view(V rg); // initializes the underlying view via std::move(r)

Parametreler

rg
Ters çevrilmiş görünümünü sağlamak için görünüm.

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

Dönüş değeri

Ters sırada temel alınan aralığın görünümü.

Açıklamalar

Oluşturmanın reverse_view en iyi yolu, aralık bağdaştırıcısını views::reverse 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) Varsayılan oluşturucu varsayılan olarak bir reverse_viewbaşlatır.
2) Belirtilen görünümden bir reverse_view oluşturun.

Örnek: reverse_view

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

int main()
{
    std::vector<int> v{0, 1, 2, 3, -4, 5, 6};
    auto rv = v | std::views::reverse;
    
    for (auto e : rv) // 6 5 -4 3 2 1 0
    {
        std::cout << e << ' ';
    }
}
6 5 -4 3 2 1 0

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 reverse_viewbir yineleyici alın.

1) constexpr reverse_iterator<iterator_t<V>> begin();
2) constexpr reverse_iterator<iterator_t<V>> begin() requires common_range<V>;
3) constexpr auto begin() const requires common_range<const V>;

Parametreler

Hiçbiri.

Dönüş değeri

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

Açıklamalar

öğesine yapılan ilk çağrıdan begin()sonra, içinde kaç öğe olursa olsun, izleyen çağrılar reverse_viewO(1) sabit zamanında çalışır. Değerini önbelleğe last alıp tekrar tekrar uygulamasından begindöndürebilmesi nedeniyle bu durumun etkileri reverse_view vardır. Bu, temel kapsayıcı değiştirildikten sonra görünümü yeniden kullanmamanız gerektiği anlamına gelir. Temel alınan aralık değiştirilirse, ucuz olan yeni bir görünüm oluşturun.

2) Temel alınan görünümün yerine common_rangegetirmesi gerekir. Bu, temel alınan görünümün aynı başlangıç ve bitiş yineleyici türüne sahip olması gerektiği anlamına gelir.
3) Temel alınan görünümün, sabit görünümün üzerinde yineleme yapması için karşılaması common_range const reverse_viewgerekir.

end

Sentinel'i reverse_view

1) constexpr reverse_iterator<iterator_t<V>> end();
2) constexpr auto end() const requires common_range<const V>;

Parametreler

Hiçbiri.

Dönüş değeri

içindeki son öğeyi reverse_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.

Açıklamalar

2 için, temel görünümün sabit görünüm için karşılaması common_range gerekir; bu da temel görünümün aynı başlangıç ve bitiş yineleyici türüne sahip olması gerektiği anlamına gelir.

size

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

constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

Parametreler

Hiçbiri.

Dönüş değeri

içindeki reverse_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.

<ranges>
reverse aralık bağdaştırıcısı
Sınıfları görüntüleme