Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
En vy över elementen vid ett markerat index i varje tuppeln-liknande värde i ett intervall. Om du till exempel får ett intervall med std::tuple<string, int>skapar du en vy som består av elementen string från varje tuppeln.
Syntax
template<input_range V, size_t N>
class elements_view : public view_interface<elements_view<V, N>>;
Mallparametrar
N
Indexet för det element som ska väljas för vyn.
V
Typ av underliggande intervall. Den här typen måste uppfylla ranges::input_range.
Visa egenskaper
En beskrivning av följande poster finns i Visa klassegenskaper
| Karakteristisk | Beskrivning |
|---|---|
| Intervalladapter | views::elements |
| Underliggande intervall | Måste uppfylla input_range eller högre |
| Elementtyp | Samma som typen av det indexerade tuppelns element |
| Visa iteratorkategori |
forward_range, bidirectional_range eller random_access_range |
| Storlek | Endast om det underliggande intervallet uppfyller sized_range |
Är const-iterable |
Endast om det underliggande intervallet uppfyller const-iterable |
| Gemensamt intervall | Endast om det underliggande intervallet uppfyller common_range |
| Lånat intervall | Endast om det underliggande intervallet uppfyller borrowed_range |
Medlemmar
| Medlemsfunktioner | Beskrivning |
|---|---|
| KonstruktorerC++20 | Konstruera en elements_view. |
base
C++20 |
Hämta det underliggande intervallet. |
begin
C++20 |
Hämta en iterator till det första elementet. |
end
C++20 |
Hämta sentinel i slutet av vyn. |
size
C++20 |
Hämta antalet element i den här vyn. Det underliggande intervallet måste uppfylla sized_range. |
Ärvd från view_interface |
Beskrivning |
back
C++20 |
Hämta det sista elementet. |
empty
C++20 |
Testa om är elements_view tom. |
front
C++20 |
Hämta det första elementet. |
operator[]
C++20 |
Hämta elementet på den angivna positionen. |
operator bool
C++20 |
Testa om är elements_view inte tom. |
Kravspecifikation
Rubrik:<ranges> (sedan C++20)
Namespace:std::ranges
Kompilatoralternativ:/std:c++20 eller senare krävs.
Anmärkningar
De tupppelliknande typer som du kan använda med elements_view är std::tuple, std::pairoch std::array.
Konstruktörer
Konstruera en instans av en elements_view.
1) constexpr elements_view(V base);
2) elements_view() requires std::default_initializable<V> = default;
Parameterar
base
Det underliggande intervallet.
Information om mallparametertypen finns i Mallparametrar.
Returvärde
En elements_view instans.
Anmärkningar
Det bästa sättet att skapa en elements_view är genom att använda elements intervalladaptern. Intervalladapter är det avsedda sättet att skapa visningsklasser. Vytyperna exponeras om du vill skapa en egen anpassad vytyp.
1) Skapa en elements_view från den angivna vyn.
2) Standardkonstruktionen är elements_view.
Exempel: 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
Hämtar en kopia av det underliggande intervallet.
// 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() &&;
Parameterar
Ingen.
Returvärde
Det underliggande intervallet.
begin
Hämta en iterator till det första elementet i elements_view.
1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires range<const V>;
Parameterar
Ingen.
Returvärde
En iterator som pekar på det första elementet i elements_view.
end
Hämta sentinel i slutet av 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>;
Parameterar
Ingen.
Returvärde
Sentinel som följer det sista elementet i elements_view:
size
Hämta antalet element i vyn.
constexpr auto size() requires sized_range<V>;
constexpr auto size() const requires sized_range<const V>;
Parameterar
Ingen.
Returvärde
Antalet element i elements_view.
Anmärkningar
Vyns storlek är endast tillgänglig om det underliggande intervallet är ett sized_range, eller med andra ord, avgränsat.