Aracılığıyla paylaş


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

Farklı yineleyici ve sentinel türlerine sahip olabilecek bir aralık alın ve aynı yineleyici ve sentinel türüne sahip bir görünüm oluşturun. Bu, yineleyici çiftleri tarafından belirtilen aralıkları kabul eden STL algoritmalarını çağırmak için kullanışlıdır.

Sözdizimi

template<ranges::view V>
    requires (!ranges::common_range<V> && std::copyable<ranges::iterator_t<V>>)
class common_view : public ranges::view_interface<common_view<V>>;

Şablon parametreleri

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

Ö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::common
Temel alınan aralık Veya üzerini karşılaması forward_range gerekir
Öğe türü Temel alınan aralıkla aynı
Yineleyici kategoriyi görüntüleme forward_rangeveya random_access_range temel alınan aralık ve random_access_rangesized_range
Boyutlu Yalnızca temel alınan aralık karşılanırsa sized_range
- constyinelenebilir Yalnızca temel alınan aralık const yinelenebilirse
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 common_view.
baseC++20 Temel alınan görünümü alın.
beginC++20 Görünümdeki ilk öğeye bir yineleyici alın.
endC++20 Görünümün sonunda sentinel'i alın.
sizeC++20 Görünümdeki öğe sayısını alın.
Devralınan view_interface Açıklama
backC++20 Son öğeyi alın.
dataC++20 İlk öğeye bir işaretçi alın.
emptyC++20 Görünümün boş olup olmadığını test edin.
frontC++20 İlk öğeyi alın.
operator[]C++20 Öğesini belirtilen konumda alın.
operator boolC++20 Görünümün boş olup olmadığını test edin.

Açıklamalar

Oluşturmanın common_view en iyi yolu, aralık bağdaştırıcısını views::common 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.

Bu görünüm, farklı yineleyici/sentinel türlerine sahip bir aralığı aynı olmasını bekleyen eski bir algoritmaya geçirmek için kullanışlıdır.

Gereksinimler

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

Ad alanı: std::ranges

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

Oluşturucular

Bir common_view örneği oluşturun.

1) common_view() = default;
2) constexpr explicit common_view(V v);

Parametreler

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

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

Açıklamalar

1) Varsayılan olarak öğesini common_viewoluşturur.
2) kullanarak std::move(v)temel görünümden bir common_view oluşturur. Performansı olumsuz etkileyecek kötüye kullanımı önlemek için yaygın bir aralıksa V bir hata oluşur.

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

begin

İlk öğeye bir yineleyici alın.

constexpr auto begin();
constexpr auto begin() const requires range<const V>;

Dönüş değeri

Görünümdeki ilk öğeye iş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

Görünümün sonunda sentinel'i alın.

constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;

Dönüş değeri

Görünümdeki son öğeyi izleyen 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 ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

Parametreler

Hiçbiri.

Dönüş değeri

Görünümdeki öğe sayısı.

Ayrıca bkz.

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