سلام به کاربران روکسو. در این قسمت به معرفی Tuples یا چندتایی میپردازیم. تا پایان با ما همراه باشید.
یک tuple، شی است که میتواند تعدادی از عناصر را نگهدارد. عناصر میتوانند از انواع دادهی مختلف باشند. عناصر tuples به ترتیبی که در آن، آنها دسترسی خواهند داشت، به عنوان آرگومان (arguments) مقدارهدهی اولیه شده هستند.
1. تابع ()get: تابع ()get برای دسترسی مقادیر tuple و ویرایشها آنها استفاده شده است. این تابع شاخص ( index ) نام tuple را به عنوان آرگومان برای دسترسی به یک عنصر خاص tuple میپذیرد.
2. تابع ()make_tuple: تابع ()make_tuple برای تخصیص tuple با مقادیر استفاده شده است. مقادیر ارسالشده باید در ترتیبی با مقادیر تعریفشده در tuple باشند.
قطعهکُد زیر را برای درک بهتر ()tuple، تابع ()get و همچنین تابع ()make_pair مشاهده کنید.
// 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 اولین و سوم مقادیر tuple را ویرایش میکند.
3. tuple_size: تعداد عناصر ارائهشده در tuple را برمیگرداند.
قطعهکُد زیر را برای درک سادهتر این موضوع مشاهده کنید:
/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: تابع ()swap، عناصر 2 tuple مختلف را عوض میکند.
برای درک بهتر این تابع، قطعهکُد زیر را مشاهده کنید:
//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: کار این تابع، بازکردن مقادیر tuple در متغیرهای جداگانه است. 2 ()tie متفاوت وجود دارد، با ignore و بدون ignore، درواقع ignore، یک عنصر tuple خاص را نادیده میگیرد و جلوگیری میکند از آن عنصر برای بازشدن.
قطعهکُد زیر را برای درک بهتر این تابع، مشاهده کنید:
// 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: این تابع 2 tuple را ترکیب و یک tupe جدید را برمیگرداند.
قطعهکُد زیر این موضوع را نشان میدهد:
// 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
منبع: وب سایت geeksforgeeks
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.