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.
Tampilan atas elemen pada indeks yang dipilih di setiap nilai seperti tuple dalam rentang. Misalnya, mengingat rentang std::tuple<string, int>, buat tampilan yang terdiri string dari elemen dari setiap tuple.
Sintaks
template<input_range V, size_t N>
class elements_view : public view_interface<elements_view<V, N>>;
Parameter template
N
Indeks elemen yang akan dipilih untuk tampilan.
V
Jenis rentang yang mendasar. Jenis ini harus memuaskan ranges::input_range.
Melihat karakteristik
Untuk deskripsi entri berikut, lihat Menampilkan karakteristik kelas
| Karakteristik | Deskripsi |
|---|---|
| Adaptor rentang | views::elements |
| Rentang yang mendasar | Harus memuaskan input_range atau lebih tinggi |
| Jenis elemen | Sama seperti jenis elemen tuple terindeks |
| Lihat kategori iterator |
forward_range, bidirectional_range, atau random_access_range |
| Ukuran | Hanya jika rentang yang mendasar memenuhi sized_range |
Apakah const-iterable |
Hanya jika rentang yang mendasar memenuhi const-iterable |
| Rentang umum | Hanya jika rentang yang mendasar memenuhi common_range |
| Rentang yang dipinjam | Hanya jika rentang yang mendasar memenuhi borrowed_range |
Anggota
| Fungsi anggota | Keterangan |
|---|---|
| KonstruktorC++20 |
elements_viewBuat . |
base
C++20 |
Dapatkan rentang yang mendasar. |
begin
C++20 |
Dapatkan iterator ke elemen pertama. |
end
C++20 |
Dapatkan sentinel di akhir tampilan. |
size
C++20 |
Dapatkan jumlah elemen dalam tampilan ini. Rentang yang mendasar harus memuaskan sized_range. |
Diwariskan dari view_interface |
Keterangan |
back
C++20 |
Dapatkan elemen terakhir. |
empty
C++20 |
Uji apakah elements_view kosong. |
front
C++20 |
Dapatkan elemen pertama. |
operator[]
C++20 |
Dapatkan elemen pada posisi yang ditentukan. |
operator bool
C++20 |
Uji apakah elements_view tidak kosong. |
Persyaratan
Header:<ranges> (sejak C++20)
kumpulan nama XML: std::ranges
Opsi Pengkompilasi:/std:c++20 atau yang lebih baru diperlukan.
Keterangan
Jenis seperti tuple yang dapat Anda gunakan adalah elements_viewstd::tuple, std::pair, dan std::array.
Konstruktor
Buat instans dari elements_view.
1) constexpr elements_view(V base);
2) elements_view() requires std::default_initializable<V> = default;
Parameter
base
Rentang yang mendasar.
Untuk informasi tentang jenis parameter templat, lihat Parameter templat.
Nilai hasil
Instans elements_view .
Keterangan
Cara terbaik untuk membuat elements_view adalah dengan menggunakan elements adaptor rentang. Adaptor rentang adalah cara yang dimaksudkan untuk membuat kelas tampilan. Jenis tampilan diekspos jika Anda ingin membuat jenis tampilan kustom Anda sendiri.
1) Buat elements_view dari tampilan yang ditentukan.
2) Default membuat elements_view.
Contoh: elements_view
// requires /std:c++20 or later
#include <array>
#include <iostream>
#include <map>
#include <ranges>
#include <vector>
#include <string>
#include <utility>
int main()
{
// ========== work with a std::map
std::map<std::string, int> cpp_standards
{
{"C++98", 1988},
{"C++03", 2003},
{"C++11", 2011},
{"C++14", 2014},
{"C++17", 2017},
{"C++20", 2020}
};
// create an elements_view of all the string elements (<1>) from each tuple
for (int const year : std::views::elements<1>(cpp_standards))
{
std::cout << year << ' '; // 2003 2011 2014 2017 1988 2020
}
std::cout << '\n';
// Another way to call the range adaptor using pipe (|) syntax
for (auto&& name : cpp_standards | std::views::elements<0>)
{
std::cout << name << ' '; // C++03 C++11 C++14 C++17 C++98 C++20
}
std::cout << '\n';
// ========== working with arrays
std::array<std::array<int, 4>, 3> arr = { {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}} };
for (int& fourth : arr | std::views::elements<3>)
{
std::cout << fourth << ' '; // 3 7 11
}
std::cout << '\n';
// ========== work with a std::pair
std::vector<std::pair<std::string, int>> windows
{
{"Windows 1.0", 1985},
{"Windows 2.0", 1987},
{"Windows 3.0", 1990},
{"Windows 3.1", 1992},
{"Windows NT 3.1", 1993},
{"Windows 95", 1995},
{"Windows NT 4.0", 1996},
{"Windows 98", 1998},
{"Windows 2000", 2000}
};
for (int year : std::views::elements<1>(windows))
{
std::cout << year << ' '; // 1985 1987 1990 1992 1993 1995 1996 1998 2000
}
}
2003 2011 2014 2017 1988 2020
C++03 C++11 C++14 C++17 C++98 c++20
3 7 11
1985 1987 1990 1992 1993 1995 1996 1998 2000
base
Mendapatkan salinan rentang yang mendasar.
// Uses a copy constructor to return the underlying range
constexpr V base() const& requires std::copy_constructible<V>;
// Uses a move constructor to return the underlying range
constexpr V base() &&;
Parameter
Tidak ada.
Nilai hasil
Rentang yang mendasar.
begin
Dapatkan iterator ke elemen pertama di elements_view.
1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires range<const V>;
Parameter
Tidak ada.
Nilai hasil
Iterator yang menunjuk pada elemen pertama di elements_view.
end
Dapatkan sentinel di akhir elements_view
1) constexpr auto end() requires (!Simple_view<V> && !ranges::common_range<V>);
2) constexpr auto end() requires (!Simple_view<V> && ranges::common_range<V>);
3) constexpr auto end() const requires ranges::range<const V>;
4) constexpr auto end() const requires ranges::common_range<const V>;
Parameter
Tidak ada.
Nilai hasil
Sentinel yang mengikuti elemen terakhir dalam elements_view:
size
Dapatkan jumlah elemen dalam tampilan.
constexpr auto size() requires sized_range<V>;
constexpr auto size() const requires sized_range<const V>;
Parameter
Tidak ada.
Nilai hasil
Jumlah elemen dalam elements_view.
Keterangan
Ukuran tampilan hanya tersedia jika rentang yang mendasar adalah sized_range, atau dengan kata lain, terikat.