هيكل ملزم في C ++

Hykl Mlzm Fy C



يسمح لك ربط البنية باستخراج العناصر من بنية أو فئة وتعيينها إلى متغيرات مختلفة دون الوصول إلى كل عضو على حدة. يتم استخدام ربط البنية للتخلص من الحاجة إلى الاستخراج اليدوي للعنصر وتحسين إمكانية قراءة الكود وإيجازه من خلال السماح بالتفريغ المتزامن للعديد من عناصر الهيكل أو الفئة إلى متغيرات متميزة. في هذا البرنامج التعليمي ، سنناقش العمل وبناء الجملة وأمثلة على ربط البنية في C ++.

ما هو الربط المنظم في C ++؟

ربط الهيكل هو ميزة C ++ تمت إضافتها في C ++ 17 والتي تسمح أيضًا بتحليل بنية أو مجموعة إلى متغيرات فردية ، مما يحسن من إيجاز الكود. يمكن استخدامه لجعل بناء جملة وصول أعضاء الهيكل أبسط وتقليل احتمالية الأخطاء الناتجة عن الأخطاء المطبعية أو الفهرسة غير الصحيحة.

بناء الجملة







بناء جملة ربط البنية في C ++ كما يلي:



آلي [ var1 و var2 و ... ] = تعبير ؛

في صيغة ربط البنية في C ++ ، حيث 'var1' و 'var2' هي أسماء متغيرة ، و 'التعبير' هو تعبير ينتج بنية أو فئة. نستخدم الكلمات الرئيسية التلقائية للإعلان عن المتغيرات التي يتم إنشاؤها تلقائيًا.



الصفات التعريفية

يمكن استخدام المعدِّلات في الاقتران مع الارتباطات المنظمة. بناء الجملة مذكور أدناه:





آلي & [ أ و ب و ج و ... ] = تعبير ؛

آلي && [ أ و ب و ج و ... ] = تعبير ؛

يحدد عامل التشغيل '&' أو '&&' المستخدم في الإعلان ما إذا كان الارتباط مرجعًا لـ lvalue أو rvalue. مرجع lvalue الذي يمثله '&' يؤسس مرجعًا يمكن استخدامه لتغيير قيم متغيرات الربط. ستظهر التغييرات التي تم إجراؤها على القيم التي تم إجراؤها باستخدام المرجع في البنية الأصلية أو المجموعة.

المرجع rvalue الذي يمثله '&&' ، من ناحية أخرى ، يوفر مرجعًا يقتصر على استخدامه لقراءة قيمة المتغيرات المدرجة في الربط. إنه مفيد للربط بأشياء عابرة أو قيم rvalues ​​التي يجب تدميرها لأنها تتجنب عمل نسخة طبق الأصل من الكائن ، وقد يكون ذلك ذاكرة ويستغرق وقتًا طويلاً.



مثال 1: هيكل ملزم في C ++

فيما يلي مثال على ربط بنية C ++:

# تضمين

استخدام اسم للمحطة ؛

هيكل مكعب

{

int x ؛

int و ؛

int مع ؛

} ؛

int رئيسي ( )

{

ج مكعب = { 10 و عشرين و 30 } ؛

آلي [ x_ تنسيق و y_ تنسيق و z_ تنسيق ] = ج ؛

كوت << 'المحور س:' << x_ تنسيق << endl ؛

كوت << 'المحور ص:' << y_ تنسيق << endl ؛

كوت << 'المحور Z:' << z_ تنسيق << endl ؛

يعود 0 ؛

}

في المثال أعلاه ، نعلن عن مكعب هيكلي به ثلاثة أعداد صحيحة x و y و z. يظهر الهيكل مكعب في الفضاء. يتم إنشاء متغير c من نوع المكعب وتهيئته بالقيم (10،20،30). في ربط بنية الكود هذا ، يعين قيم الأعضاء x و y و z من البنية للمتغيرات الفردية x_coordinate و y_coordinate و z_coordinate على التوالي باستخدام بناء الجملة التلقائي [x_coordinate، y_coordinate، z_coordinate] = c. ناتج ما سبق موضح أدناه:

مثال 2: ربط البنية في C ++ لفك حزمة هيكل

فيما يلي مثال على ربط الهيكل لتفريغ بنية:

# تضمين

# تضمين <سلسلة>

استخدام اسم للمحطة ؛

هيكل طالب {

اسم السلسلة ؛

int عمر ؛

} ؛

int رئيسي ( ) {

طلاب { 'حمزة' و 32 } ؛

آلي [ اسم و عمر ] = س ؛

كوت << اسم << ' يكون ' << عمر << 'سنة'. << endl ؛

يعود 0 ؛

}

في الكود أعلاه ، تتكون بنية الطالب من عضوين: أ اسم هذا هو سلسلة و عمر هذا عدد صحيح. بعد ذلك ، نقوم بإنشاء كائن الطالب وتعيين القيم الأولية لكل عضو من أعضائه. يتم بعد ذلك فصل أعضاء s إلى اسم المتغير وعمره باستخدام الربط الهيكلي ، ثم تتم طباعة هذه القيم كما في لقطة الشاشة أدناه:

مثال 3: ربط البنية في C ++ مع المُعدِّلات

يوجد أدناه مثال لربط البنية الذي يستخدم مُعدِّلًا لتحديث قيمة متغير مثل num1 و num2:

# تضمين

# تضمين

استخدام اسم للمحطة ؛

int رئيسي ( ) {

مترابطة بيانية < int و int > ر { 25 و عشرين } ؛

آلي & [ عدد 1 و عدد 2 ] = ر ؛

كوت << 'قيمة num1 =' << عدد 1 << '، num2 =' << عدد 2 << ' ' ؛

عدد 1 = 30 ؛

كوت << 'القيمة المتغيرة لـ num1 =' << عدد 1 << '، num2 =' << عدد 2 <<

' ' ؛

آلي && [ num3 و عدد 4 ] = Make_tuple ( 100 و 250 ) ؛

كوت << 'الآن قيمة num3 =' << num3 << '، num4 =' << عدد 4 << ' ' ؛

يعود 0 ؛

}

في الكود السابق ، نبني tuple t ونستخدم مرجع lvalue لربط مكوناته بـ num1 و num2. نقوم بعد ذلك بتغيير قيمة num1 إلى 30 وإخراج قيم num1 و num2. أنشئ أيضًا مجموعة مؤقتة عبر make_tuple (100 ، 250) واستخدم مرجع rvalue لربط عناصرها بـ num3 و num4. تُطبع قيم num3 و num4 بعد ذلك لأن num3 و num4 مقترنان بمرجع rvalue ، ولا يمكن استخدامها لتغيير المجموعة المؤقتة المكونة بواسطة make_tuple (100 ، 250). هم فقط قادرون على القراءة منه. عند تنفيذ البرنامج ، ستظهر النتيجة التالية على الشاشة:

خاتمة

ربط البنية عبارة عن ميزة في C ++ تقوم بفك حزم قيم متعددة لبنية أو فئة إلى متغيرات فردية في تعبير واحد ، مما ينتج عنه رمز أكثر إيجازًا وقابلية للقراءة وأكثر أمانًا. يعمل ربط الهيكل باستخدام المعدلات على تبسيط عملية تغيير القيم داخل الكائنات المهيكلة.