// tuple example
#include // std::cout
#include // std::tuple, std::get, std::tie, std::ignore
int main ()
{
std::tuple foo (10,'x');
auto bar = std::make_tuple ("test", 3.1, 14, 'y');
std::get<2>(bar) = 100; // access element
int myint; char mychar;
//获取foo中的元素
std::tie (myint, mychar) = foo; // unpack elements
std::cout << myint << ' ' << mychar << std::endl;
//获取bar中的元素
std::tie (std::ignore, std::ignore, myint, mychar) = bar; // unpack (with ignore)
std::cout << myint << ' ' << mychar << std::endl;
mychar = std::get<3>(bar);
std::get<0>(foo) = std::get<2>(bar);
std::get<1>(foo) = mychar;
std::cout << "foo contains: ";
std::cout << std::get<0>(foo) << ' ';
std::cout << std::get<1>(foo) << 'n';
return 0;
}
// tuple_cat example
#include // std::cout
#include // std::pair
#include // std::string
#include // std::tuple, std::tuple_cat, std::get
int main ()
{
std::tuple mytuple (3.14,"pi");
std::pair mypair (10,'a');
auto myauto = std::tuple_cat ( mytuple, std::tuple(mypair) );
std::cout << "myauto contains: " << 'n';
std::cout << std::get<0>(myauto) << 'n';
std::cout << std::get<1>(myauto) << 'n';
std::cout << std::get<2>(myauto) << 'n';
std::cout << std::get<3>(myauto) << 'n';
return 0;
}
// make_tuple example
#include
#include
#include
int main()
{
auto first = std::make_tuple (10,'a'); // tuple < int, char >
const int a = 0; int b[3]; // decayed types:
auto second = std::make_tuple (a,b); // tuple < int, int* >
auto third = std::make_tuple (std::ref(a),"abc"); // tuple < const int&, const char* >
std::cout << "third contains: " << std::get<0>(third);
std::cout << " and " << std::get<1>(third);
std::cout << std::endl;
return 0;
}