Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sabit uzunlukta bir öğe dizisini sarmalar.
Sözdizimi
class tuple {
tuple();
explicit tuple(P1, P2, ..., PN); // 0 < N
tuple(const tuple&);
template <class U1, class U2, ..., class UN>
tuple(const tuple<U1, U2, ..., UN>&);
template <class U1, class U2>
tuple(const pair<U1, U2>&); // N == 2
void swap(tuple& right);
tuple& operator=(const tuple&);
template <class U1, class U2, ..., class UN>
tuple& operator=(const tuple<U1, U2, ..., UN>&);
template <class U1, class U2>
tuple& operator=(const pair<U1, U2>&); // N == 2
};
Parametreler
TN
N. tanımlama grubu öğesinin türü.
Açıklamalar
Sınıf şablonu, sırasıyla , ..., T2TN, türündeki T1N nesnelerini depolayan bir nesneyi açıklar. Burada 0 <= N <= Nmax. Tanımlama grubu örneğinin tuple<T1, T2, ..., TN> kapsamı, şablon bağımsız değişkenlerinin sayısıdır N . Şablon bağımsız değişkeninin Ti dizini ve bu türe karşılık gelen depolanmış değeridir i - 1. Bu nedenle, bu belgelerde türleri 1 ile N arasında saysak da, karşılık gelen dizin değerleri 0 ile N - 1 arasında değişir.
Örnek
// tuple.cpp
// compile with: /EHsc
#include <vector>
#include <iomanip>
#include <iostream>
#include <tuple>
#include <string>
using namespace std;
typedef tuple <int, double, string> ids;
void print_ids(const ids& i)
{
cout << "( "
<< get<0>(i) << ", "
<< get<1>(i) << ", "
<< get<2>(i) << " )." << endl;
}
int main( )
{
// Using the constructor to declare and initialize a tuple
ids p1(10, 1.1e-2, "one");
// Compare using the helper function to declare and initialize a tuple
ids p2;
p2 = make_tuple(10, 2.22e-1, "two");
// Making a copy of a tuple
ids p3(p1);
cout.precision(3);
cout << "The tuple p1 is: ( ";
print_ids(p1);
cout << "The tuple p2 is: ( ";
print_ids(p2);
cout << "The tuple p3 is: ( ";
print_ids(p3);
vector<ids> v;
v.push_back(p1);
v.push_back(p2);
v.push_back(make_tuple(3, 3.3e-2, "three"));
cout << "The tuples in the vector are" << endl;
for(vector<ids>::const_iterator i = v.begin(); i != v.end(); ++i)
{
print_ids(*i);
}
}
The tuple p1 is: ( 10, 0.011, one ).
The tuple p2 is: ( 10, 0.222, two ).
The tuple p3 is: ( 10, 0.011, one ).
The tuples in the vector are
( 10, 0.011, one ).
( 10, 0.222, two ).
( 3, 0.033, three ).
operator=
Bir tuple nesne atar.
tuple& operator=(const tuple& right);
template <class U1, class U2, ..., class UN>
tuple& operator=(const tuple<U1, U2, ..., UN>& right);
template <class U1, class U2>
tuple& operator=(const pair<U1, U2>& right); // N == 2
tuple& operator=(tuple&& right);
template <class U1, class U2>
tuple& operator=(pair<U1, U2>&& right);
Parametreler
BM
Kopyalanan N. tanımlama grubu öğesinin türü.
Sağ
Kopyalanacak tanımlama grubu.
Açıklamalar
İlk iki üye işleç, sağ öğelerini öğesine karşılık gelen öğelerine *thisatar. Üçüncü üye işleci, 0 *this dizinindeki öğesine ve right.second dizin 1'deki öğesine atarright.first. Üç üye işleç de döndürür *this.
Geri kalan üye işleçleri öncekilere benzeticidir, ancak Rvalue Başvuru Bildirimcisi: &.
Örnek
// std__tuple__tuple_operator_as.cpp
// compile with: /EHsc
#include <tuple>
#include <iostream>
#include <utility>
typedef std::tuple<int, double, int, double> Mytuple;
int main()
{
Mytuple c0(0, 1, 2, 3);
// display contents " 0 1 2 3"
std::cout << " " << std::get<0>(c0);
std::cout << " " << std::get<1>(c0);
std::cout << " " << std::get<2>(c0);
std::cout << " " << std::get<3>(c0);
std::cout << std::endl;
Mytuple c1;
c1 = c0;
// display contents " 0 1 2 3"
std::cout << " " << std::get<0>(c1);
std::cout << " " << std::get<1>(c1);
std::cout << " " << std::get<2>(c1);
std::cout << " " << std::get<3>(c1);
std::cout << std::endl;
std::tuple<char, int> c2;
c2 = std::make_pair('x', 4);
// display contents " x 4"
std::cout << " " << std::get<0>(c2);
std::cout << " " << std::get<1>(c2);
std::cout << std::endl;
return (0);
}
0 1 2 3
0 1 2 3
x 4
swap
İki tanımlama grubunun öğelerini değiştirir.
template <class... Types>
void swap(tuple<Types...&> left, tuple<Types...&> right);
Parametreler
Sol
Öğeleri, tanımlama grubu sağındaki öğelerle değiştirilecek bir tanımlama grubu.
Sağ
Öğeleri soldaki tanımlama grubuyla değiştirilecek bir tanımlama grubu.
Açıklamalar
işlevi yürütür left.swap(right).
tuple
Bir tuple nesne oluşturur.
constexpr tuple();
explicit constexpr tuple(const Types&...);
template <class... UTypes>
explicit constexpr tuple(UTypes&&...);
tuple(const tuple&) = default;
tuple(tuple&&) = default;
template <class... UTypes>
constexpr tuple(const tuple<UTypes...>&);
template <class... UTypes>
constexpr tuple(tuple<UTypes...>&&);
// only if sizeof...(Types) == 2
template <class U1, class U2>
constexpr tuple(const pair<U1, U2>&);
template <class U1, class U2>
constexpr tuple(pair<U1, U2>&&);
Parametreler
BM
Kopyalanan N. tanımlama grubu öğesinin türü.
Sağ
Kopyalanacak tanımlama grubu.
Açıklamalar
İlk oluşturucu, öğeleri varsayılan olarak örülen bir nesne oluşturur.
İkinci oluşturucu, öğeleri , , P2... PN bağımsız değişkenlerinden P1kopyalanmış bir nesne oluşturur ve her Pi birinin öğesi dizininde i - 1başlatılır.
Üçüncü ve dördüncü oluşturucular, öğeleri sağın ilgili öğesinden kopyalanmış bir nesne oluşturur.
Beşinci oluşturucu, 0 dizinindeki öğesi öğesi öğesinden right.first oluşturulmuş ve dizin 1'deki öğesi öğesinden right.secondoluşturulmuş olan bir nesnesi oluşturur.
Kalan oluşturucular öncekilere benzeticidir, ancak Rvalue Başvuru Bildirimcisi: &.
Örnek
// std__tuple__tuple_tuple.cpp
// compile with: /EHsc
#include <tuple>
#include <iostream>
#include <utility>
typedef std::tuple<int, double, int, double> Mytuple;
int main()
{
Mytuple c0(0, 1, 2, 3);
// display contents "0 1 2 3"
std::cout << std::get<0>(c0) << " ";
std::cout << std::get<1>(c0) << " ";
std::cout << std::get<2>(c0) << " ";
std::cout << std::get<3>(c0);
std::cout << std::endl;
Mytuple c1;
c1 = c0;
// display contents "0 1 2 3"
std::cout << std::get<0>(c1) << " ";
std::cout << std::get<1>(c1) << " ";
std::cout << std::get<2>(c1) << " ";
std::cout << std::get<3>(c1);
std::cout << std::endl;
std::tuple<char, int> c2(std::make_pair('x', 4));
// display contents "x 4"
std::cout << std::get<0>(c2) << " ";
std::cout << std::get<1>(c2);
std::cout << std::endl;
Mytuple c3(c0);
// display contents "0 1 2 3"
std::cout << std::get<0>(c3) << " ";
std::cout << std::get<1>(c3) << " ";
std::cout << std::get<2>(c3) << " ";
std::cout << std::get<3>(c3);
std::cout << std::endl;
typedef std::tuple<int, float, int, float> Mytuple2;
Mytuple c4(Mytuple2(4, 5, 6, 7));
// display contents "4 5 6 7"
std::cout << std::get<0>(c4) << " ";
std::cout << std::get<1>(c4) << " ";
std::cout << std::get<2>(c4) << " ";
std::cout << std::get<3>(c4);
std::cout << std::endl;
return (0);
}
0 1 2 3
0 1 2 3
x 4
0 1 2 3
4 5 6 7