Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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