Кортежи в C ++

Опубликовано: 1 Января, 2022

Что такое кортеж?
Кортеж - это объект, который может содержать несколько элементов. Элементы могут иметь разные типы данных. Элементы кортежей инициализируются как аргументы в порядке доступа к ним.

Операции с кортежем : -

1. get () : - get () используется для доступа к значениям кортежа и их изменения, он принимает индекс и имя кортежа в качестве аргументов для доступа к определенному элементу кортежа.

2. make_tuple () : - make_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. tuple_size : - возвращает количество элементов в кортеже.

//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;
}

Выход:

Размер кортежа: 3

4. swap () : - 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;
}

Выход:

Первые элементы кортежа перед заменой: 20 г 17,5
Вторые элементы кортежа перед заменой: 10 f 15.5
Первые элементы кортежа после обмена: 10 f 15.5
Вторые элементы кортежа после замены: 20 г 17,5

5. tie () : - Работа tie () состоит в том, чтобы распаковать значения кортежа в отдельные переменные. Есть два варианта tie (): с «игнорированием» и без него, «игнорировать» игнорирует определенный элемент кортежа и предотвращает его распаковку.

// 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;
}

Выход:

Значения распакованного кортежа (без игнорирования): 20 г 17,5
Распакованные значения кортежа (с игнорированием): 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;
}

Выход:

Новые элементы кортежа в следующем порядке: 20 g 17,5 30 f 10,5

Автором этой статьи является Манджит Сингх. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью метода влиятельности. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++