Partager via


tuple_element, classe

Encapsule un élément tuple . Les spécialisations encapsulent des éléments array et des éléments pair.

Syntaxe

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

Paramètres

Index
Index de l’élément désigné.

Tuple
Type du tuple.

Elem
Type d’un élément de tableau.

Taille
Taille du tableau.

T1
Type du premier élément d’une paire.

T2
Le type du second élément d’une paire.

Notes

Le modèle tuple_element de classe a un typedef type imbriqué qui est un synonyme du type à l’index index du type tuple de type Tuple.

Le typedef tuple_element_t est un alias pratique pour tuple_element<Index, Tuple>::type.

La spécialisation de modèle de classe pour les tableaux fournit une interface à un array tuple d’éléments Size , chacun ayant le même type. Chaque spécialisation a un typedef type imbriqué qui est un synonyme du type de l’élément Index du array, avec toutes les qualifications const-volatiles conservées.

Les spécialisations de modèle pour les types pair fournissent chacune un typedef de membre unique, type, qui est un synonyme du type de l’élément à la position spécifiée dans la paire, avec des qualifications const et/ou volatiles conservées. Le typedef tuple_element_t est un alias pratique pour tuple_element<N, pair<T1, T2>>::type.

Utilisez la get fonction pour retourner l’élément à une position spécifiée ou d’un type spécifié.

Exemple : Obtenir un élément à partir d’un tuple

#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

Exemple : Obtenir un élément à partir d’un tableau

#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

Exemple : Obtenir un élément à partir d’une paire

#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

Spécifications

Header :<tuple>

Header :<array (pour la spécialisation de> tableau)

Header :<utility> (pour les spécialisations de paire)

Espace de noms : std