Aracılığıyla paylaş


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

Bir aralık aralığının öğelerini tek bir görünümde birleştirir.

Sözdizimi

template<input_range R> requires view<R> && input_range<range_reference_t<R>> &&
    (is_reference_v<range_reference_t<R>> || view<range_value_t<R>>)
class join_view : public view_interface<join_view<R>>;

Şablon parametreleri

R
Temel alınan aralığın türü. Veya üzerini karşılamalıdır input_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::join
Temel alınan aralık Veya üzerini karşılaması input_range gerekir
Öğe türü Temel alınan aralıkla aynı
Yineleyici kategoriyi görüntüleme input_rangebidirectional_range yinelenen temel aralığa bağlı olarak
Boyutlu Hayır
- constyinelenebilir Yalnızca temel alınan aralık const yinelenebilirse
Ortak aralık Yalnızca temel alınan aralık karşılanırsa common_range
Ödünç alınan aralık Hayır

Üyeler

Üye işlevleri Açıklama
OluşturucularC++20 oluşturma join_view.
baseC++20 Temel alınan aralığa bir başvuru alın.
beginC++20 İlk öğeye bir yineleyici alın.
endC++20 Görünümün sonunda sentinel'i alın.
Devralınan view_interface Açıklama
backC++20 Son öğeyi alın.
emptyC++20 Görünümün boş olup olmadığını test edin.
frontC++20 İlk öğeyi alın.
operator boolC++20 Görünümün boş olup olmadığını test edin.

Açıklamalar

Oluşturmanın join_view en iyi yolu, aralık bağdaştırıcısını views::join kullanmaktır. Aralık bağdaştırıcıları, görünüm sınıflarına erişmenin 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, birden çok aralığı tek bir görünümde birleştirmek istediğinizde 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 join_view örneği oluşturun.

1) join_view() = default;
2) constexpr explicit join_view(R base)

Parametreler

base
Temel alınan aralık.

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

Açıklamalar

1) Varsayılan olarak bir join_viewoluşturur.
2) 'den baseöğesini join_view oluşturur.

Örnek: join_view

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

int main()
{
    std::vector<int> rg1{1, 2, 3, 4};
    std::vector<int> rg2{5, 6, 7};
    std::vector<int> rg3{8, 9, 10, 11, 12, 13};
    std::vector<int> rangeOfRanges[] {rg1, rg2, rg3};

    auto jv = std::ranges::join_view(rangeOfRanges);

    for (auto& e : jv)
    {
        std::cout << e << " ";
    }
}
1 2 3 4 5 6 7 8 9 10 11 12 13

base

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

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

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

Parametreler

Hiçbiri.

Dönüş değeri

  1. Döndürülen görünüm kopya oluşturulur.
  2. Döndürülen görünüm, move oluşturulur.

begin

Görünümdeki ilk öğeye bir yineleyici alın.

constexpr auto begin();
constexpr auto begin() const
    requires ranges::input_range<const V> && std::is_reference_v<ranges::range_reference_t<const V>>;

Parametreler

Hiçbiri.

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 sentinel_t<R> end();
constexpr auto end() const requires range<const R>

Parametreler

Hiçbiri.

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.

Ayrıca bkz.

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