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.
Aralıktaki her tanımlama grubu benzeri değerde seçili dizindeki öğelerin görünümü. Örneğin, bir aralığı std::tuple<string, int>göz önünde bulundurulduğunda, her tanımlama grubundaki string öğelerden oluşan bir görünüm oluşturun.
Sözdizimi
template<input_range V, size_t N>
class elements_view : public view_interface<elements_view<V, N>>;
Şablon parametreleri
N
Görünüm için seçecek öğenin dizini.
V
Temel alınan aralığın türü. Bu tür karşılamalıdır ranges::input_range.
Özellikleri görüntüleme
Aşağıdaki girdilerin açıklaması için bkz . Sınıf özelliklerini görüntüleme
| Karakteristik | Açıklama |
|---|---|
| Aralık bağdaştırıcısı | views::elements |
| Temel alınan aralık | Veya üzerini karşılaması input_range gerekir |
| Öğe türü | Dizine alınan tanımlama grubu öğesinin türüyle aynı |
| Yineleyici kategoriyi görüntüleme |
forward_range, bidirectional_range veya random_access_range |
| Boyutlu | Yalnızca temel alınan aralık karşılanırsa sized_range |
- constyinelenebilir |
Yalnızca temel alınan aralık karşılanırsa const-iterable |
| Ortak aralık | Yalnızca temel alınan aralık karşılanırsa common_range |
| Ödünç alınan aralık | Yalnızca temel alınan aralık karşılanırsa borrowed_range |
Üyeler
| Üye işlevleri | Açıklama |
|---|---|
| OluşturucularC++20 | oluşturma elements_view. |
base
C++20 |
Temel alınan aralığı alın. |
begin
C++20 |
İlk öğeye bir yineleyici alın. |
end
C++20 |
Görünümün sonunda sentinel'i alın. |
size
C++20 |
Bu görünümdeki öğe sayısını alın. Temel alınan aralığın karşılaması sized_rangegerekir. |
Devralınan view_interface |
Açıklama |
back
C++20 |
Son öğeyi alın. |
empty
C++20 |
öğesinin elements_view boş olup olmadığını test edin. |
front
C++20 |
İlk öğeyi alın. |
operator[]
C++20 |
Öğesini belirtilen konumda alın. |
operator bool
C++20 |
öğesinin elements_view 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.
Açıklamalar
Birlikte elements_view kullanabileceğiniz tanımlama grubu benzeri türler , std::tupleve std::pair'lerdirstd::array.
Oluşturucular
bir örneğini elements_viewoluşturun.
1) constexpr elements_view(V base);
2) elements_view() requires std::default_initializable<V> = default;
Parametreler
base
Temel alınan aralık.
Şablon parametre türü hakkında bilgi için bkz . Şablon parametreleri.
Dönüş değeri
Bir elements_view örnek.
Açıklamalar
Oluşturmanın elements_view en iyi yolu, aralık bağdaştırıcısını elements 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.
1) Belirtilen görünümden bir elements_view oluşturun.
2) Varsayılan olarak bir elements_viewoluşturur.
Örnek: 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
Temel alınan aralığın bir kopyasını alır.
// 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() &&;
Parametreler
Hiçbiri.
Dönüş değeri
Temel alınan aralık.
begin
içindeki ilk öğeye elements_viewbir yineleyici alın.
1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires range<const V>;
Parametreler
Hiçbiri.
Dönüş değeri
içindeki ilk öğeye elements_viewişaret eden bir yineleyici.
end
Sentinel'i 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>;
Parametreler
Hiçbiri.
Dönüş değeri
içindeki son öğeyi elements_viewizleyen sentinel:
size
Görünümdeki öğe sayısını alın.
constexpr auto size() requires sized_range<V>;
constexpr auto size() const requires sized_range<const V>;
Parametreler
Hiçbiri.
Dönüş değeri
içindeki elements_viewöğe sayısı.
Açıklamalar
Görünümün boyutu yalnızca temel alınan aralık bir ise veya başka bir sized_rangedeyişle sınırlanmışsa kullanılabilir.