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

Bir ilk değeri art arda artırarak bir öğe dizisinin görünümünü oluşturur. Sıra sınırlanabilir veya ilişkisiz olabilir.

Sözdizimi

template<std::weakly_incrementable W, std::semiregular Bound = std::unreachable_sentinel_t>
    requires __WeaklyEqualityComparableWith<W, Bound> && std::copyable<W>
class iota_view : public ranges::view_interface<iota_view<W, Bound>>;

Şablon parametreleri

W
Dizideki değerlerin türü. Belirtilen türün desteklemesi operator++gerekir.

Bound
Bitiş değerinin türü. ise Bound std::unreachable_sentinel_t (varsayılan değer), görünüm ilişkisizdir.

Ö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::iota
Temel alınan aralık Bu görünüm üyelerini oluşturduğundan geçerli değil
Öğe türü Şablon parametresiyle aynı W
Yineleyici kategoriyi görüntüleme input_range türüne random_access_rangebağlı olarak en fazla destekler.W
Boyutlu Yalnızca aralığın bir bitiş değeri varsa, yani sonsuz bir seri değildir
- constyinelenebilir Yes
Ortak aralık Yalnızca ile aynı türdeyse BoundW
Ödünç alınan aralık Yes

Üyeler

Üye işlevleri Açıklama
Oluşturucular C++20 Görünümü oluşturma.
beginC++20 İlk öğeye bir yineleyici alın.
endC++20 Görünümün sonunda sentinel'i alın.
sizeC++20 Öğe sayısını 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[]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 iyi bir iota_view yolu, aralık bağdaştırıcısını iota 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.

Değerlerin dizisi, aralıktaki 1,2,3 veya 'a', 'b', 'c' veya ardışık öğeler gibi tam sayı değerleri olabilir.

Bu görünüm genellikle bir dizi değer üzerinde yineleme yapmak için kullanılır. Örneğin:

for (int i : iota_view{1, 10}) // iterate over a view of the integers 1 through 9
{
    std::cout << i << ' '; // 1 2 3 4 5 6 7 8 9
}

Gereksinimler

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

Ad alanı: std::ranges

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

Oluşturucular

örneğini iota_viewoluşturun.

1) iota_view() requires std::default_initializable<W> = default;
2) constexpr explicit iota_view(W value);
3) constexpr iota_view(std::type_identity_t<W> value, std::type_identity_t<Bound> bound);
4) constexpr iota_view( /*iterator*/ first, /*sentinel*/ last );

Parametreler

value
Serinin başlangıç değeri.

bound
Serinin sınırı. Serideki son değerden daha büyük bir değerdir.

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

Açıklamalar

1) Varsayılan olarak başlatılan şablon türü Wtarafından belirlenen başlangıç ve bitiş değerine sahip bir iota_view oluşturun.
2) Belirtilen başlangıç değeri ve değer başlatılan türü Wtarafından belirlenen bitiş değeri ile bir iota_view oluşturun.
3) Belirtilen başlangıç değeri ve bitiş değeriyle sınırlanmış iota_view bir oluşturun. Bitiş değeri, belirtilen son değerden bir küçüktür.
4) Alt görünümler oluşturmak için kullanılır. Örneğin, std::ranges::iota_view(start, end); alt görünümün başlangıcına ve end sonuna kadar nerede ve nerede start yineleyiciler.

Bu sınıfı doğrudan oluşturmak yerine, oluşturmanın kolay bir yolu iota_view aralık bağdaştırıcısını iota 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.

İlişkinin türü ise unreachable_sentinel_t, sonuçta elde edilen görünüm sınırlanır.

Değeri başlatan oluşturuculardan birini kullandığınızda, sınır bu tür için varsayılan olarak başlatılan değer olur. Örneğin, iota_view<int, int>{} varsayılan olarak oluşturulmuş int değeri ve bağlı değeri her ikisi de 0olduğundan boş bir aralığıdırint. Ayrıca, iota_view<int, int>{-4} -4, -3, -2, -1 varsayılan olarak inşa edilen int sınırın olmasıdır 0.

iota_view oluşturucu örneği

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

int main()
{
    std::ranges::iota_view<int> iv; // create an iota_view with an unbounded range, starting at 0 
    std::ranges::iota_view<int> iv2(5); // create an iota_view with an unbounded range, starting at 5.
    std::ranges::iota_view<int, int> iv3{5, 10}; // create an iota_view with a bounded range, starting at 5 and ending at 9
    
    std::vector<int> v{10, 20, 35, 45, 50, 66, 77, 82, 90, 100};
    auto start = std::ranges::find(v, 35);
    auto end = std::ranges::find(v, 82);
    for (auto &&val : std::ranges::iota_view(start, end))
    {
        std::cout << *val << ' '; // outputs 35 45 50 66 77
    }
}

begin

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

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

Parametreler

Hiçbiri.

Dönüş değeri

Görünümdeki ilk öğeye işaret eden bir yineleyici.

end

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

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

Parametreler

Hiçbiri.

Dönüş değeri

iota_view ilişkisizse, döndürürstd::unreachable_sentinel.

iota_view sınırlanmışsa, dizideki son değeri geçmiş sentinel'i işaret eden bir yineleyici döndürür.

size

Görünümdeki öğe sayısını alın. sınırlanmalıdır iota_view .

constexpr auto size() requires
    (same_as<W, Bound> && advanceable <W>) ||
    (integral<W> && integral<Bound>) ||
    sized_sentinel_for<Bound, W>;

Parametreler

Hiçbiri.

Dönüş değeri

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

Açıklamalar

İlişkisiz iota_viewbir üzerinde çağrı size() yapamazsınız.

Ayrıca bkz.

<ranges>
iota() aralık bağdaştırıcısı
std::numerics::iota
sınıfları görüntüleme