tuple_element Sınıfı

Bir tuple öğeyi sarmalar. Özelleştirmeler öğeleri ve pair öğeleri sarmalararray.

Sözdizimi

// CLASS tuple_element (find element by index)
template <size_t Index, class Tuple>
   struct tuple_element;

// tuple_element for const
template <size_t Index, class Tuple>
   struct tuple_element<Index, const Tuple>;

// tuple_element for volatile
template <size_t Index, class Tuple>
   struct tuple_element<Index, volatile Tuple>;

// tuple_element for const volatile
template <size_t Index, class Tuple>
   struct tuple_element<Index, const volatile Tuple>;

// Helper typedef
template <size_t Index, class Tuple>
   using tuple_element_t = typename tuple_element<Index, Tuple>::type;

// Specialization for arrays
template <size_t Index, class Elem, size_t Size>
   struct tuple_element<Index, array<Elem, Size>>;

// Specializations for pairs
// struct to determine type of element 0 in pair
template <class T1, class T2>
   struct tuple_element<0, pair<T1, T2>>;

// struct to determine type of element 1 in pair
template <class T1, class T2>
   struct tuple_element<1, pair<T1, T2>>;

Parametreler

Dizin
Belirlenen öğenin dizini.

Tuple
Tanımlama grubunun türü.

Elem
Dizi öğesinin türü.

Büyüklük
Dizinin boyutu.

T1
Bir çiftteki ilk öğenin türü.

T2
Bir çiftteki ikinci öğenin türü.

Açıklamalar

Sınıf şablonutuple_element, tanımlama grubu türü Tanımlama Grubu dizin dizinindeki türün eş anlamlısı olan iç içe bir tür tanımına type sahiptir.

typedef tuple_element_t , için tuple_element<Index, Tuple>::typeuygun bir diğer addır.

Diziler için sınıf şablonu özelleştirmesi, her biri aynı türe sahip bir öğe tanımlama grubu Size olarak bir array arabirim sağlar. Her özelleştirmenin, herhangi bir geçici nitelemenin korunduğu dizin öğesinin arraytürü için eş anlamlı olan iç içe bir tür tanımı type vardır.

Türler için pair şablon özelleştirmeleri her biri, typeçiftte belirtilen konumdaki öğenin türü için eş anlamlı olan ve herhangi bir sabit ve/veya geçici niteliklerin korunduğu tek bir üye tür tanımı sağlar. typedef tuple_element_t , için tuple_element<N, pair<T1, T2>>::typeuygun bir diğer addır.

get öğesini belirtilen bir konumda veya belirtilen türde döndürmek için işlevini kullanın.

Örnek: Bir demetten öğe alma

#include <tuple>
#include <string>
#include <iostream>

using namespace std;
typedef tuple<int, double, string> MyTuple;

int main() {
    MyTuple c0{ 0, 1.5, "Tail" };

    tuple_element_t<0, MyTuple> val = get<0>(c0); //get by index
    tuple_element_t<1, MyTuple> val2 = get<1>(c0);
    tuple_element_t<2, MyTuple> val3 = get<string>(c0); // get by type

    cout << val << " " << val2 << " " << val3 << endl;
}
0 1.5 Tail

Örnek: Diziden öğe alma

#include <array>
#include <iostream>

using namespace std;
typedef array<int, 4> MyArray;

int main()
{
    MyArray c0 { 0, 1, 2, 3 };

    for (const auto& e : c0)
    {
        cout << e << " ";
    }
    cout << endl;

    // display first element "0"
    tuple_element<0, MyArray>::type val = c0.front();
    cout << val << endl;
}
0 1 2 3
0

Örnek: Bir çiftten öğe alma

#include <utility>
#include <iostream>

using namespace std;

typedef pair<int, double> MyPair;
int main() {
    MyPair c0(0, 1.333);

    // display contents "0 1"
    cout << get<0>(c0) << " ";
    cout << get<1>(c0) << endl;

    // display first element "0 " by index
    tuple_element<0, MyPair>::type val = get<0>(c0);
    cout << val << " ";

    // display second element by type
    tuple_element<1, MyPair>::type val2 = get<double>(c0);
    cout << val2 << endl;
}
0 1.333
0 1.333

Gereksinimler

Üst bilgi:<tanımlama grubu>

Header:<array> (dizi özelleştirmesi için)

Header:<utility> (çift özelleştirmeleri için)

Ad alanı: std