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 görünümü sınırlayıcıya göre alt bölümlere böler. Sınırlayıcı tek bir öğe veya öğelerin görünümü olabilir. Sınırlayıcı, sonuçta elde edilen split_viewöğesinin bir parçası değildir.
İlgili görünüm sınıfıdır lazy_split_view . ile lazy_split_view arasındaki split_view birincil farklar şunlardır:
| Görünüm | Aralığı const bölebilir |
aralık türü |
|---|---|---|
split_view |
hayır | Veya üzerini destekler forward_range . |
lazy_split_view |
evet | Veya üzerini destekler input_range . |
Tercih split_view , olan bir aralığı bölmeniz gerekmediği sürece daha verimli olmasıdır const.
Sözdizimi
template<forward_range V, forward_range Pattern>
requires view<V> && view<Pattern> &&
indirectly_comparable<iterator_t<V>, iterator_t<Pattern>, ranges::equal_to>
class split_view : public view_interface<split_view<V, Pattern>>;
Şablon parametreleri
Pattern
Sınırlayıcı sırasını belirten görünümün türü.
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::split |
| Temel alınan aralık | Temel alınan aralıkla aynı |
| Öğe türü | range_reference_t<V> |
| Yineleyici kategoriyi görüntüleme | Karşılayan forward_range |
| Boyutlu | Hayır |
- constyinelenebilir |
Hayır |
| 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şturucular | Görünümü oluşturma. |
baseC++20 |
Temel alınan aralığı 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 |
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. |
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 split_view
1) split_view() requires default_initializable<V> && default_initializable<Pattern> = default;
2) constexpr split_view(V base, Pattern pattern);
3) template<input_range R> requires constructible_from<V, views::all_t<R>> &&
constructible_from<Pattern, single_view<range_value_t<R>>>
constexpr split_view(R&& rg, range_value_t<R> e);
Parametreler
e
Görünümün bölüneceği yeri tanımlayan tek bir öğe. öğesi, sonuçta elde edilen görünümün bir parçası değildir.
base
Temel alınan görünüm.
pattern
Görünümün bölüneceği yeri tanımlayan öğelerin görünümü. Öğelerin görünümü, sonuçta elde edilen görünümün bir parçası değildir.
rg
Bölünecek aralık.
Şablon parametre türleri hakkında bilgi için bkz . Şablon parametreleri.
Dönüş değeri
Bir split_view veya daha fazla alt düzenleme içeren bir örnek.
Açıklamalar
Oluşturmanın split_view en iyi yolu, aralık bağdaştırıcısını views::split kullanmaktır. Aralık bağdaştırıcıları, görünüm sınıfları oluşturmanın amaçlanan yoludur. Görünüm türleri yalnızca kendi özel görünüm türünüzü oluşturmak istemeniz durumunda kullanıma sunulur.
1) Varsayılan olarak oluşturulduğunda bir split_view oluşturun. Temel alınan görünüm ve pattern varsayılan olarak oluşturulur. base() öğesinin V()bir kopyasını döndürür.
2) Bir sınırlayıcı dizisi kullanarak görünümü bölerek bir oluşturun split_view .
3) Tek bir split_view sınırlayıcı kullanarak görünümü bölerek bir oluşturun.
Örnek split_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> rg{ 1, 2, 3, 1, 2, 3, 4, 5, 6 };
// pipe syntax using range adaptor
for (const auto& subrange : rg | std::views::split(3))
{
// outputs
// 1 2
// 1 2
// 4 5 6
for (const auto& elem : subrange)
{
std::cout << elem << ' ';
}
std::cout << '\n';
}
int delimiters[] = {2, 3};
for (auto splitRange : std::views::split(rg, delimiters)) // ctor syntax
{
for (auto& i : splitRange)
{
std::cout << i << " "; // 1 1 4 5 6
}
}
}
1 2
1 2
4 5 6
1 1 4 5 6
base
Temel alınan görünümün bir kopyasını alır.
// 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öndürülenler
Temel alınan görünüm.
begin
Görünümdeki ilk öğeye bir yineleyici alın.
constexpr auto begin();
Parametreler
Hiçbiri.
Dönüş değeri
Görünümdeki ilk öğeye işaret eden bir yineleyici.
end
Görünümün sonunda sentinel'i alın.
constexpr auto end();
Parametreler
Hiçbiri.
Dönüş değeri
Görünümdeki son öğeyi izleyen sentinel:
Ayrıca bkz.
<ranges>
split_view aralık bağdaştırıcısı
lazy_split_view sınıfı
sınıfları görüntüleme