Aracılığıyla paylaş


values_view class (C++ Standart Kitaplığı)

Bir koleksiyondaki her tanımlama grubu benzeri değerde ikinci dizinden oluşan bir görünüm. Örneğin, bir değer aralığı std::tuple<string, int> göz önünde bulundurulduğunda, her bir tanımlama grubundaki int tüm öğelerden oluşan bir görünüm oluşturun.

values_view için bir diğer addır elements_view<R, 1> ve gibi std::unordered_mapilişkilendirici kapsayıcılardaki değerlerin görünümünü oluşturmak için kullanışlıdır.

Sözdizimi

template<input_range R>
using values_view = ranges::elements_view<R, 1>;

Şablon parametreleri

R
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

Characteristic Açıklama
Aralık bağdaştırıcısı views::values
Temel alınan aralık Veya üzerini karşılaması forward_range gerekir
Öğe türü İkinci 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 values_view.
baseC++20 Temel alınan aralığı alın.
beginC++20 İlk öğeye bir yineleyici alın.
endC++20 sentinel'i öğesinin sonunda alın values_view.
sizeC++20 Öğe sayısını alın.
Devralınan view_interface Açıklama
backC++20 Son öğeyi alın.
emptyC++20 öğesinin values_view boş olup olmadığını test edin.
frontC++20 İlk öğeyi alın.
operator[]C++20 Öğesini belirtilen konumda alın.
operator boolC++20 öğesinin values_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 values_view kullanabileceğiniz tanımlama grubu benzeri türler , ve std::arrayşeklindedirstd::tuplestd::pair.

Oluşturucular

bir örneğini values_viewoluşturun.

1) constexpr values_view(R base);
2) values_view() requires default_initializable<V> = default;

Parametreler

base
Tanımlama grubu benzeri türlerin temel aralığı.

Şablon parametre türü hakkında bilgi için bkz . Şablon parametreleri.

Dönüş değeri

Bir values_view örnek.

Açıklamalar

Oluşturmanın values_view en iyi yolu, aralık bağdaştırıcısını values 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 values_view oluşturun.
  2. Varsayılan oluşturucu, varsayılan olarak oluşturulan values_viewbir oluşturur.

Örnek: values_view

// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <map>
#include <string>
#include <utility>
#include <vector>

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}
    };

    // Extract all of the values from the map
    for (int years : std::views::values(cpp_standards))
    {
        std::cout << years << ' '; // 2003 2011 2014 2017 1988 2020
    }
    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 95", 1995},
        {"Windows 98", 1998},
        {"Windows 1.0", 1985},
        {"Windows 2000", 2000}
    };

    // Another way to call the range adaptor using '|': create a keys_view from each pair
    for (int years : windows | std::views::values)
    {
        std::cout << years << ' '; // 1985 1987 1990 1992 ...
    }
}
2003 2011 2014 2017 1988 2020
1985 1987 1990 1992 1993 1995 1996 1995 1998 1985 2000

base

Temel alınan görünümün bir kopyasını alır.

// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying view
constexpr V base() &&;

Parametreler

Hiçbiri

Dönüş değeri

Temel alınan görünüm.

begin

içindeki ilk öğeye values_viewbir yineleyici alın.

// returns a non-const iterator
1) constexpr auto begin() requires (!Simple_view<V>);

// returns a const iterator
2) constexpr auto begin() const requires ranges::range<const V>;

Parametreler

Hiçbiri.

Dönüş değeri

içindeki ilk öğeye values_viewişaret eden bir yineleyici.

10, 20 ve 30 öğelerini içeren bir vektör resmi. İlk öğe 10 içerir ve begin() olarak etiketlenir. Son öğe 30 içerir ve 'son öğe' olarak etiketlenmiştir. Son öğeden sonraki bir sanal kutu sentinel'i gösterir ve end() olarak etiketlenmiştir.

end

Sentinel'i values_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 izleyen sentinel values_view

10, 20 ve 30 öğelerini içeren bir vektör resmi. İlk öğe 10 içerir ve begin() olarak etiketlenir. Son öğe 30 içerir ve 'son öğe' olarak etiketlenmiştir. Son öğeden sonraki bir sanal kutu sentinel'i gösterir ve end() olarak etiketlenmiştir.

size

Öğ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 values_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.

Ayrıca bkz.

elements_view
keys_view
<ranges>
Sınıfları görüntüleme