سلام به کاربران روکسو. در این قسمت به معرفی 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
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.