Aracılığıyla paylaş


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

Başka bir aralığa ait öğelere başvuran bir görünüm.

Sözdizimi

template<std::ranges::range R>
    requires std::is_object_v<R>
class ref_view : public ranges::view_interface<ref_view<R>>;

Şablon parametreleri

R
Başvurulacak aralık.

Üyeler

Üye işlevleri Açıklama
OluşturucularC++20 oluşturma ref_view.
baseC++20 Temel alınan aralığa bir başvuru alın.
beginC++20 İlk öğeye bir yineleyici alın.
dataC++20 Başvuruda bulunan aralıktaki ilk öğeye bir işaretçi alın.
emptyC++20 Bunun ref_view boş olup olmadığını test edin.
endC++20 Bu ref_viewöğesinin sonunda sentinel'i alın.
sizeC++20 Öğe sayısını alın. Temel alınan aralığın karşılaması sized_rangegerekir.
Devralınan view_interface Açıklama
backC++20 Son öğeyi alın.
frontC++20 İlk öğeyi alın.
operator[]C++20 Öğesini belirtilen konumda alın.
operator boolC++20 Bunun ref_view boş olup olmadığını test edin.

Ö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::all veya views::common
Temel alınan aralık Karşılamalıdır input_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 Yes
Ortak aralık Yalnızca temel alınan aralık karşılanırsa common_range
Ödünç alınan aralık Yes

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 örneğini oluşturma ref_view

// construct a ref_view from a range
template<different-from<ref_view> R>
constexpr ref_view(R&& rg);

Parametreler

rg
Başvurulacak aralık.

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

Dönüş değeri

Bir ref_view örnek.

Açıklamalar

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

bir ref_view kapsayıcıyı görünüme dönüştürmek için yararlıdır. Örneğin, bir vector görünümünü görünüme dönüştürmek için kullanabilirsinizref_view; bu da vektörün öğelerinin çevresine geçirilmesini ucuz hale getirir.

Örnek: ref_view

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

int main()
{
    std::vector<int> v = {1,2,3};
    auto refView = std::views::all(v);
    std::cout << &refView[1] << " : " << &v[1]; // outputs two identical memory addresses, e.g. 00000239AFAFDF90 : 00000239AFAFDF90
    refView[0] = 10; // modifies v[0]
    std::cout << "\n" << v[0]; // 10
}
00000239AFAFDF90 : 00000239AFAFDF90
10

base

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

constexpr R& base() const;

Parametreler

Hiçbiri.

Dönüş değeri

Temel alınan aralık.

begin

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

constexpr iterator_t<R> begin() const;

Parametreler

Hiçbiri.

Dönüş değeri

Bu ref_viewiçindeki 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.

data

Bu ref_viewiçindeki ilk öğeye bir işaretçi alın. Aralıktaki öğeler bitişik olmalıdır.

constexpr auto data() const requires contiguous_range<R>;

Parametreler

Hiçbiri.

Dönüş değeri

İlk öğeye ilişkin bir işaretçi.

empty

Bunun ref_view boş olup olmadığını test edin.

constexpr bool empty() const

Parametreler

Hiçbiri.

Dönüş değeri

öğesinde öğe yoksa ref_view döndürürtrue. Tersi durumda false.

end

Bu ref_viewöğesinin sonunda sentinel'i alın.

constexpr sentinel_t<R> end() const

Dönüş değeri

Bu ref_viewiçindeki 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

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

constexpr auto size() const requires sized_range<R>

Parametreler

Hiçbiri.

Dönüş değeri

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

Ayrıca bkz.

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