What is a tuple?
A tuple is an object that can hold a number of elements. The elements can be of different data types. The elements of tuples are initialized as arguments in order in which they will be accessed.
Operations on tuple :-
1. get() :- get() is used to access the tuple values and modify them, it accepts the index and tuple name as arguments to access a particular tuple element.
2. make_tuple() :- make_tuple() is used to assign tuple with values. The values passed should be in order with the values declared in tuple.
CPP
#include<iostream>
#include<tuple> // for tuple
using namespace std;
int main()
{
tuple < char , int , float > geek;
geek = make_tuple( 'a' , 10, 15.5);
cout << "The initial values of tuple are : ";
cout << get<0>(geek) << " " << get<1>(geek);
cout << " " << get<2>(geek) << endl;
get<0>(geek) = 'b' ;
get<2>(geek) = 20.5;
cout << "The modified values of tuple are : ";
cout << get<0>(geek) << " " << get<1>(geek);
cout << " " << get<2>(geek) << endl;
return 0;
}
|
Output:
The initial values of tuple are : a 10 15.5
The modified values of tuple are : b 10 20.5
In the above code, get() modifies the 1st and 3rd value of tuple.
3. tuple_size :- It returns the number of elements present in the tuple.
CPP
#include<iostream>
#include<tuple> // for tuple_size and tuple
using namespace std;
int main()
{
tuple < char , int , float > geek(20, 'g' ,17.5);
cout << "The size of tuple is : ";
cout << tuple_size< decltype (geek)>::value << endl;
return 0;
}
|
Output:
The size of tuple is : 3
4. swap() :- The swap(), swaps the elements of the two different tuples.
CPP
#include<iostream>
#include<tuple> // for swap() and tuple
using namespace std;
int main()
{
tuple < int , char , float > tup1(20, 'g' ,17.5);
tuple < int , char , float > tup2(10, 'f' ,15.5);
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;
tup1.swap(tup2);
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;
}
|
Output:
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() :- The work of tie() is to unpack the tuple values into separate variables. There are two variants of tie(), with and without “ignore” , the “ignore” ignores a particular tuple element and stops it from getting unpacked.
CPP
#include<iostream>
#include<tuple> // for tie() and tuple
using namespace std;
int main()
{
int i_val;
char ch_val;
float f_val;
tuple < int , char , float > tup1(20, 'g' ,17.5);
tie(i_val,ch_val,f_val) = tup1;
cout << "The unpacked tuple values (without ignore) are : ";
cout << i_val << " " << ch_val << " " << f_val;
cout << endl;
tie(i_val,ignore,f_val) = tup1;
cout << "The unpacked tuple values (with ignore) are : ";
cout << i_val << " " << f_val;
cout << endl;
return 0;
}
|
Output:
The unpacked tuple values (without ignore) are : 20 g 17.5
The unpacked tuple values (with ignore) are : 20 17.5
6. tuple_cat() :- This function concatenates two tuples and returns a new tuple.
CPP
#include<iostream>
#include<tuple> // for tuple_cat() and tuple
using namespace std;
int main()
{
tuple < int , char , float > tup1(20, 'g' ,17.5);
tuple < int , char , float > tup2(30, 'f' ,10.5);
auto tup3 = tuple_cat(tup1,tup2);
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;
}
|
Output:
The new tuple elements in order are : 20 g 17.5 30 f 10.5
Last Updated :
06 Apr, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...