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.
Ad alanında görünüm sınıfları için temel sınıfstd::ranges. Bu sınıf türetilmiş görünüm türleri için bazı arabirimler uygular. Yazmanız gereken ortak değeri azaltmak için bunu kendi görünüm türleriniz için temel sınıf olarak kullanın.
Sözdizimi
template<class Derived>
requires std::is_class_v<Derived> &&
std::same_as<Derived, std::remove_cv_t<Derived>>
class view_interface;
Şablon parametreleri
Derived
Bu temel sınıftan türetilen sınıfın türü.
Üyeler
| Üye işlevleri | Açıklama |
|---|---|
backC++20 |
Türetilmiş görünümdeki son öğeyi alın. |
dataC++20 |
Türetilmiş görünümdeki ilk öğeye bir işaretçi alın. |
emptyC++20 |
Türetilmiş görünümün boş olup olmadığını test edin. |
frontC++20 |
Türetilmiş görünümdeki ilk öğeyi alın. |
sizeC++20 |
Türetilmiş görünümdeki öğe sayısını alın. |
| İşleçler | Açıklama |
operator[]C++20 |
Öğesini belirtilen konumda alın. |
operator boolC++20 |
Türetilmiş 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.
back
Türetilmiş görünümdeki son öğeyi alın.
constexpr auto back()
requires ranges::bidirectional_range<Derived> &&
ranges::common_range<Derived>;
constexpr auto back() const
requires ranges::bidirectional_range<const Derived> &&
ranges::common_range<const Derived>;
Parametreler
Hiçbiri.
Dönüş değeri
Türetilmiş görünümdeki son öğe.
Açıklamalar
Türetilmiş görünüm ve common_range'yi karşılamalıdırbidirectional_range.
ve'in back() front() davranışı, herhangi bir boş görünüm için tanımlanmamıştır.
data
Türetilmiş görünümdeki ilk öğeye bir işaretçi alın.
constexpr auto data()
requires std::contiguous_iterator<ranges::iterator_t<Derived>>;
constexpr auto data() const
requires ranges::range<const Derived> &&
std::contiguous_iterator<ranges::iterator_t<const Derived>>;
Parametreler
Hiçbiri.
Dönüş değeri
Türetilmiş görünümdeki ilk öğeye ilişkin bir işaretçi.
Açıklamalar
Türetilmiş görünümün yineleyicisinin karşılaması contiguous_iteratorgerekir.
empty
Türetilmiş görünümün boş olup olmadığını test edin.
1) constexpr bool empty() requires ranges::forward_range<Derived>;
2) constexpr bool empty() const requires ranges::forward_range<const Derived>;
Parametreler
Hiçbiri.
Dönüş değeri
Türetilen görünümde öğe yoksa döndürür true . Aksi takdirde döndürür false.
Açıklamalar
Türetilmiş görünüm karşılamalıdır std::ranges::forward_range.
front
Türetilmiş görünümdeki ilk öğeyi alın.
constexpr auto front()
requires ranges::forward_range<Derived>;
constexpr auto front() const
requires ranges::forward_range<const Derived>;
Parametreler
Hiçbiri.
Dönüş değeri
Türetilmiş görünümdeki son öğe.
Açıklamalar
Türetilmiş görünüm karşılamalıdır forward_range.
'nin front() davranışı için std::ranges::empty_viewtanımlanmamıştır.
size
Türetilmiş görünümdeki öğe sayısını alın.
constexpr auto size() requires ranges::forward_range<Derived> &&
std::sized_sentinel_for<ranges::sentinel_t<Derived>,
ranges::iterator_t<Derived>>;
constexpr auto size() const requires ranges::forward_range<const Derived> &&
std::sized_sentinel_for<ranges::sentinel_t<const Derived>,
ranges::iterator_t<const Derived>>;
Parametreler
Hiçbiri.
Dönüş değeri
Türetilmiş görünümdeki öğelerin sayısı.
Açıklamalar
Türetilmiş görünümün yineleyicisinin karşılaması sized_sentinel_forgerekir.
operator[]
Öğesini belirtilen konumda alın.
template<ranges::random_access_range R = Derived>
constexpr decltype(auto) operator[](ranges::range_difference_t<R> pos);
template<ranges::random_access_range R = const Derived>
constexpr decltype(auto) operator[](ranges::range_difference_t<R> pos) const;
Parametreler
pos
Döndürülecek öğenin başlangıç yineleyicisine göre konumu.
Dönüş değeri
Başlangıç yineleyicisine göre belirtilen konumdaki öğesi.
Açıklamalar
Türetilmiş görünüm karşılamalıdır random_access_range.
Bu işlecin davranışı için std::ranges::empty_viewtanımlanmamıştır.
Örnek: operator[]
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v{1, 2, 3, 4, 5};
std::ranges::drop_view dv = std::views::drop(v, 2);
for (auto e : dv)
{
std::cout << e << ' '; // 3 4 5
}
std::cout << "\ndv[1] = " << dv[1];
}
3 4 5
dv[1] = 4
view_interface::operator bool
Türetilmiş görünümün boş olup olmadığını test edin.
explicit constexpr operator bool();
explicit constexpr operator bool() const;
Parametreler
Hiçbiri.
Dönüş değeri
Türetilmiş görünümde öğe yoksa (görünüm boşsa) döndürür false . Aksi takdirde, döndürür true (görünüm boş değildir).
Açıklamalar
Türetilmiş görünümün yineleyicisinin karşılaması std::ranges::forward_iteratorgerekir.
Bu işleç ile !empty()eşdeğerdir. Bu, aralıkta üzerinde çalışacak bir şey olup olmadığını test etmek için yazmanın if (someRange) {...} kullanışlı olmasını sağlar.
Bu işlecin davranışı için std::ranges::empty_viewtanımlanmamıştır.
Örnek: operator bool
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v{1, 2, 3, 4, 5};
std::ranges::filter_view fv = std::views::filter(v, [](int e) { return e > 3; });
bool isNotEmpty = static_cast<bool>(fv);
std::cout << "Has elements greater than 3: " << std::boolalpha << isNotEmpty << '\n' >>;
}
Has elements greater than 3: true
Ayrıca bkz.
<ranges>
ranges::begin()
ranges::data()
ranges::end()
ranges::empty()
ranges::size()
Sınıfları görüntüleme