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>::type
uygun 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 array
tü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>>::type
uygun 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