في C++، لا يوجد طريقة مباشرة لفك توابع (tuple) أو أزواج (pair) إلى مراجع (references) في سطر واحد بنفس طريقة دالة tie
، لكن يمكنك استخدام البنية التحتية (std::tie) مع الدالة std::forward_as_tuple
لتحقيق هذا الهدف. هذه الطريقة تتطلب كتابة أكثر قليلاً، لكنها تعمل بشكل جيد لتعيين المراجع بشكل متسلسل.
لنفترض أن لديك فهرسًا للأزواج في g
، وتريد تفكيك العناصر إلى متغيرات x
و y
و z
باستخدام مراجع. يمكنك القيام بذلك كما يلي:
cpp#include
#include
#include
int main() {
std::vectorint, int, int>> g(100);
// تحميل g بقيم مثالية
g[19] = std::make_tuple(1, 2, 3);
// فك التوابع إلى المراجع
int& x = std::get<0>(g[19]);
int& y = std::get<1>(g[19]);
int& z = std::get<2>(g[19]);
// استخدام المراجع
std::cout << "x: " << x << ", y: " << y << ", z: " << z << std::endl;
return 0;
}
إذا كنت تريد تجنب كتابة الأرقام الثابتة للعناصر، يمكنك استخدام std::tie
مع std::forward_as_tuple
بشكل مماثل لطريقة التفكيك التي تستخدمها مع tie
:
cpp#include
#include
#include
int main() {
std::vectorint, int, int>> g(100);
// تحميل g بقيم مثالية
g[19] = std::make_tuple(1, 2, 3);
// فك التوابع إلى المراجع باستخدام std::tie و std::forward_as_tuple
int x, y, z;
std::tie(x, y, z) = std::forward_as_tuple(std::get<0>(g[19]), std::get<1>(g[19]), std::get<2>(g[19]));
// استخدام المراجع
std::cout << "x: " << x << ", y: " << y << ", z: " << z << std::endl;
return 0;
}
هذا الحل يقدم راحة بسيطة في الكتابة ولكنه يتطلب تحديد نوع كل متغير يدويًا.
المزيد من المعلومات
في C++، يمكنك استخدام البنية التحتية (std::tie) بالاشتراك مع الدالة std::forward_as_tuple
لفك توابع (tuples) إلى مراجع (references) في سطر واحد. هذا يسمح لك بإنشاء متغيرات مرجعية تشير إلى قيم داخل التوابع بطريقة نظيفة.
على سبيل المثال، لنفترض أن لديك قائمة من التوابع g
وتريد فك توابع العناصر في الموقع 19 إلى متغيرات x
و y
و z
باستخدام مراجع. يمكنك القيام بذلك كما يلي:
cpp#include
#include
#include
int main() {
std::vectorint, int, int>> g(100);
// تحميل g ببعض القيم
g[19] = std::make_tuple(1, 2, 3);
// فك توابع الموقع 19 إلى متغيرات x و y و z
int x, y, z;
std::tie(x, y, z) = g[19];
// استخدام المراجع
std::cout << "x: " << x << ", y: " << y << ", z: " << z << std::endl;
return 0;
}
هذا الكود يستخدم std::tie
لإنشاء متغيرات مرجعية x
و y
و z
تشير إلى قيم التوابع داخل g[19]
بطريقة سهلة ونظيفة.