C++中的Tuples

什么是元组? 元组是一个可以容纳许多元素的对象。元素可以是不同的数据类型。元组的元素按访问顺序初始化为参数。

null

元组运算 :-

1.得到 :-get()用于访问和修改元组值,它接受索引和元组名称作为参数来访问特定的元组元素。

2.生成元组() :-make_tuple()用于为tuple赋值。传递的值应与元组中声明的值保持顺序。

// C++ code to demonstrate tuple, get() and make_pair()
#include<iostream>
#include<tuple> // for tuple
using namespace std;
int main()
{
// Declaring tuple
tuple < char , int , float > geek;
// Assigning values to tuple using make_tuple()
geek = make_tuple( 'a' , 10, 15.5);
// Printing initial tuple values using get()
cout << "The initial values of tuple are : " ;
cout << get<0>(geek) << " " << get<1>(geek);
cout << " " << get<2>(geek) << endl;
// Use of get() to change values of tuple
get<0>(geek) = 'b' ;
get<2>(geek) =  20.5;
// Printing modified tuple values
cout << "The modified values of tuple are : " ;
cout << get<0>(geek) << " " << get<1>(geek);
cout << " " << get<2>(geek) << endl;
return 0;
}


输出:

The initial values of tuple are : a 10 15.5
The modified values of tuple are : b 10 20.5

在上面的代码中,get()修改元组的第1个和第3个值。

3.元组大小 :-它返回元组中存在的元素数。

//C++ code to demonstrate tuple_size
#include<iostream>
#include<tuple> // for tuple_size and tuple
using namespace std;
int main()
{
// Initializing tuple
tuple < char , int , float > geek(20, 'g' ,17.5);
// Use of size to find tuple_size of tuple
cout << "The size of tuple is : " ;
cout << tuple_size< decltype (geek)>::value << endl;
return 0;
}


输出:

The size of tuple is : 3

4.互换 :-swap(),交换两个不同元组的元素。

//C++ code to demonstrate swap()
#include<iostream>
#include<tuple> // for swap() and tuple
using namespace std;
int main()
{
// Initializing 1st tuple
tuple < int , char , float > tup1(20, 'g' ,17.5);
// Initializing 2nd tuple
tuple < int , char , float > tup2(10, 'f' ,15.5);
// Printing 1st and 2nd tuple before swapping
cout << "The first tuple elements before swapping are : " ;
cout <<  get<0>(tup1) << " " << get<1>(tup1) << " "
<< get<2>(tup1) << endl;
cout << "The second tuple elements before swapping are : " ;
cout <<  get<0>(tup2) << " " << get<1>(tup2) << " "
<< get<2>(tup2) << endl;
// Swapping tup1 values with tup2
tup1.swap(tup2);
// Printing 1st and 2nd tuple after swapping
cout << "The first tuple elements after swapping are : " ;
cout <<  get<0>(tup1) << " " << get<1>(tup1) << " "
<< get<2>(tup1) << endl;
cout << "The second tuple elements after swapping are : " ;
cout <<  get<0>(tup2) << " " << get<1>(tup2) << " "
<< get<2>(tup2) << endl;
return 0;
}


输出:

The first tuple elements before swapping are : 20 g 17.5
The second tuple elements before swapping are : 10 f 15.5
The first tuple elements after swapping are : 10 f 15.5
The second tuple elements after swapping are : 20 g 17.5

5.领带 :-tie()的工作是将元组值解压成单独的变量。tie()有两种变体,有“ignore”和没有“ignore”,而“ignore”会忽略一个特定的元组元素,并阻止它被解包。

// C++ code to demonstrate working of tie()
#include<iostream>
#include<tuple> // for tie() and tuple
using namespace std;
int main()
{
// Initializing variables for unpacking
int i_val;
char ch_val;
float f_val;
// Initializing tuple
tuple < int , char , float > tup1(20, 'g' ,17.5);
// Use of tie() without ignore
tie(i_val,ch_val,f_val) = tup1;
// Displaying unpacked tuple elements
// without ignore
cout << "The unpacked tuple values (without ignore) are : " ;
cout << i_val << " " << ch_val << " " << f_val;
cout << endl;
// Use of tie() with ignore
// ignores char value
tie(i_val,ignore,f_val) = tup1;
// Displaying unpacked tuple elements
// with ignore
cout << "The unpacked tuple values (with ignore) are : " ;
cout << i_val  << " " << f_val;
cout << endl;
return 0;
}


输出:

The unpacked tuple values (without ignore) are : 20 g 17.5
The unpacked tuple values (with ignore) are : 20 17.5

6.tuple_cat() :-此函数连接两个元组并返回一个新元组。

// C++ code to demonstrate working of tuple_cat()
#include<iostream>
#include<tuple> // for tuple_cat() and tuple
using namespace std;
int main()
{
// Initializing 1st tuple
tuple < int , char , float > tup1(20, 'g' ,17.5);
// Initializing 2nd tuple
tuple < int , char , float > tup2(30, 'f' ,10.5);
// Concatenating 2 tuples to return a new tuple
auto tup3 = tuple_cat(tup1,tup2);
// Displaying new tuple elements
cout << "The new tuple elements in order are : " ;
cout << get<0>(tup3) << " " << get<1>(tup3) << " " ;
cout << get<2>(tup3) << " " << get<3>(tup3) << " " ;
cout << get<4>(tup3) << " " << get<5>(tup3) << endl;
return 0;
}


输出:

The new tuple elements in order are : 20 g 17.5 30 f 10.5

本文由 曼吉星 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享