Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Memisahkan tampilan menjadi subranges berdasarkan pemisah. Pemisah dapat menjadi elemen tunggal atau tampilan elemen. Pemisah bukan bagian dari yang dihasilkan split_view.
Tampilan terkait adalah lazy_split_view kelas . Perbedaan utama antara split_view dan lazy_split_view adalah:
| Tampilkan | Dapat memisahkan const rentang |
jenis rentang |
|---|---|---|
split_view |
no | forward_range Mendukung atau lebih tinggi. |
lazy_split_view |
yes | input_range Mendukung atau lebih tinggi. |
Lebih suka split_view karena lebih efisien kecuali Anda harus membagi rentang yaitu const.
Sintaks
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>>;
Parameter template
Pattern
Jenis tampilan yang menentukan urutan pemisah.
V
Jenis tampilan yang mendasar.
Melihat karakteristik
Untuk deskripsi entri berikut, lihat Menampilkan karakteristik kelas
| Karakteristik | Deskripsi |
|---|---|
| Adaptor rentang | views::split |
| Rentang yang mendasar | Sama seperti rentang yang mendasar |
| Jenis elemen | range_reference_t<V> |
| Lihat kategori iterator | Memenuhi forward_range |
| Ukuran | No |
Apakah const-iterable |
No |
| Rentang umum | Hanya jika rentang yang mendasar memenuhi common_range |
| Rentang yang dipinjam | No |
Anggota
| Fungsi anggota | Keterangan |
|---|---|
| Konstruktor | Buat tampilan. |
baseC++20 |
Dapatkan rentang yang mendasar. |
beginC++20 |
Dapatkan iterator ke elemen pertama. |
endC++20 |
Dapatkan sentinel di akhir tampilan. |
Diwariskan dari view_interface |
Keterangan |
emptyC++20 |
Uji apakah tampilan kosong. |
frontC++20 |
Dapatkan elemen pertama. |
operator boolC++20 |
Uji apakah tampilan tidak kosong. |
Persyaratan
Header: <ranges> (sejak C++20)
kumpulan nama XML: std::ranges
Opsi Pengkompilasi: /std:c++20 atau yang lebih baru diperlukan.
Konstruktor
Membuat instans 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);
Parameter
e
Elemen tunggal yang mengidentifikasi tempat untuk memisahkan tampilan. Elemen ini bukan bagian dari tampilan yang dihasilkan.
base
Tampilan yang mendasar.
pattern
Tampilan elemen yang mengidentifikasi tempat untuk memisahkan tampilan. Tampilan elemen bukan bagian dari tampilan yang dihasilkan.
rg
Rentang untuk dipisahkan.
Untuk informasi tentang jenis parameter templat, lihat Parameter templat.
Nilai hasil
split_view Instans yang berisi satu atau beberapa subrang.
Keterangan
Cara terbaik untuk membuat adalah split_view dengan menggunakan views::split adaptor rentang. Adaptor rentang adalah cara yang dimaksudkan untuk membuat kelas tampilan. Jenis tampilan hanya diekspos jika Anda ingin membuat jenis tampilan kustom Anda sendiri.
1) Buat split_view yang dibuat secara default. Tampilan yang mendasar dan pattern dibuat secara default. base()mengembalikan salinan .V()
2) Buat split_view dengan memisahkan tampilan menggunakan urutan pemisah.
3) Buat split_view dengan memisahkan tampilan menggunakan pemisah tunggal.
Contoh 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
Mendapatkan salinan tampilan yang mendasar.
// 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() &&;
Parameter
Tidak ada.
Mengembalikan
Tampilan yang mendasar.
begin
Dapatkan iterator ke elemen pertama dalam tampilan.
constexpr auto begin();
Parameter
Tidak ada.
Nilai hasil
Iterator yang menunjuk pada elemen pertama dalam tampilan.
end
Dapatkan sentinel di akhir tampilan.
constexpr auto end();
Parameter
Tidak ada.
Nilai hasil
Sentinel yang mengikuti elemen terakhir dalam tampilan:
Lihat juga
<ranges>
split_view adaptor rentang
lazy_split_view class
lihat kelas