بناء الجملة:
قالب < فئة T > فارغ تبديل ( تي & متغير_1 و تي & متغير_2 ) ؛يجب تبديل كل من قيمة المتغير الأول والمتغير الثاني ، وكلاهما قيم تخزين. تقوم الوظيفة فقط بتبديل قيم المتغيرات ؛ ليس لها مخرجات '.
عمل وظيفة swap () في C ++
يتم تنفيذ وظيفة المبادلة في C ++ باستخدام الأسطر الثلاثة التالية.
قالب فارغ تبديل ( تي & أنا و تي & ي ) {
T درجة الحرارة = الأمراض المنقولة جنسيا :: يتحرك ( أنا ) ؛
أنا = الأمراض المنقولة جنسيا :: يتحرك ( ي ) ؛
ي = الأمراض المنقولة جنسيا :: يتحرك ( مؤقت ) ؛
}
العبارة 'T temp = std :: move (i)' ؛ يقوم بعمل نسخة من العنصر 'i' ويكرره. هنا ، 'i = std :: move (j)' ؛ يتجاهل العناصر الأصلية لـ 'i' ويخزن نسخة 'i' من 'j' بدلاً من 'j' الأصلي. الصيغة 'j = std :: move (temp)' ؛ احفظ 'i' بنسخة من temp ، وأزل المحتويات المتطابقة من temp. أيضًا ، احذف متغير temp بعد اكتمال تنفيذ وظيفة swap ().
مثال 1: برنامج باستخدام std :: move Method to Swap
كما هو موضح أدناه ، يمكننا تبديل كائنين باستخدام ميزة C ++ 11 std :: move.
# تضمين
# تضمين <ناقل>
قالب
فارغ تبديل ( تي & أ و تي & ب )
{
T درجة الحرارة = الأمراض المنقولة جنسيا :: يتحرك ( أ ) ؛
أ = الأمراض المنقولة جنسيا :: يتحرك ( ب ) ؛
ب = الأمراض المنقولة جنسيا :: يتحرك ( مؤقت ) ؛
}
int رئيسي ( )
{
الأمراض المنقولة جنسيا :: المتجه قائمة = { 10 و 12 و 13 و خمسة عشر و 16 و 17 } ؛
int أنا = 3 و ي = 5 ؛
تبديل ( قائمة [ أنا ] و قائمة [ ي ] ) ؛
إلى عن على ( int أنا : قائمة ) {
الأمراض المنقولة جنسيا :: كوت << أنا << ' ؛
}
إرجاع 0 ؛ }
لدينا نموذج إعلان يحتوي على كائن 'T'. بعد ذلك ، أنشأنا الوظيفة على أنها 'مقايضة'. تأخذ الوظيفة المعلمتين & a & & b ، من النوع 'T'. كنتيجة للوسيطات T & a و T & b الرجوع إلى عنوان المتغير الذي تم تمريره أو تخزينه والتطبيق مباشرة عليه دون الرجوع ، تسمى وظيفة المبادلة (T & a، T & b) استدعاء من خلال المرجع.
داخل مبادلة الفراغ ، قمنا بتطبيق خوارزمية المبادلة باستخدام طريقة std :: move. ثم قمنا ببناء ملفات البرنامج الرئيسية. هنا ، أعلنا عن المتغير 'list' وقمنا بتهيئته بقائمة القيم الرقمية. لقد قمنا بتعيين قيم 'i' و 'j' للمبادلة. تم استبدال القيمة الرقمية الموجودة في الفهرس الثاني بالقيمة الرقمية في الفهرس الخامس. ثم قمنا باستدعاء دالة المبادلة وقمنا بتمرير الفهارس 'i' و 'j' إليها للمبادلة. تُستخدم حلقة for لطباعة القائمة التي تم تبديلها.
عرض الإخراج القائمة المعدلة. يمكنك ملاحظة القائمة الجديدة التي تم إنشاؤها ومبادلة القيمة وفقًا لفهارس محددة.
مثال 2: برنامج باستخدام طريقة std :: swap للتبديل
يعد استخدام آلية std :: swap الموجودة في رأس الأداة المساعدة (في C ++ 11) هو الإصلاح المعتاد. يتم تبديل قيم كائنين لجعلها تعمل.
# تضمين# تضمين <ناقل>
#include
int رئيسي ( )
{
الأمراض المنقولة جنسيا :: فكتورار = { 3 و 6 و 9 و خمسة عشر و 13 } ؛
int أنا = 3 و ي = 4 ؛
الأمراض المنقولة جنسيا :: تبديل ( arr [ أنا ] و arr [ ي ] ) ؛
إلى عن على ( int أنا : arr ) {
الأمراض المنقولة جنسيا :: كوت << أنا << ' ؛
}
إرجاع 0 ؛
}
من خلال استيراد ملف الرأس
يتم عرض القائمة التي تم الحصول عليها بعد عملية المبادلة باستخدام طريقة std :: swap على النحو التالي:
مثال 3: برنامج باستخدام أسلوب std :: iter_swap للتبديل
يعد استخدام خوارزمية std :: iter_swap ، المدرجة في رأس الخوارزمية ، خيارًا إضافيًا. الطريقة التي تعمل بها هي تبديل قيم الكائنات التي يشير إليها التكرارات المقدمة.
# تضمين# تضمين <ناقل>
# تضمين
# تضمين <الخوارزمية>
int رئيسي ( )
{
الأمراض المنقولة جنسيا :: ناقلات = { 64 و 61 و 62 و 63 و 60 } ؛
int أنا = 0 و ي = 4 ؛
تلقاءي itr1 = الأمراض المنقولة جنسيا :: التالي ( شيء. يبدأ ( ) و أنا ) ؛
تلقاءي itr2 = الأمراض المنقولة جنسيا :: التالي ( شيء. يبدأ ( ) و ي ) ؛
الأمراض المنقولة جنسيا :: iter_swap ( itr1 و itr2 ) ؛
إلى عن على ( int أنا : شيء ) {
الأمراض المنقولة جنسيا :: كوت << أنا << ' ؛
}
إرجاع 0 ؛
}
بالنسبة للطريقة الرئيسية للبرنامج ، أعلنا عن متغير متجه 'vec' وقمنا بتعيينه قائمة متجه من الأرقام. ثم حددنا موضع الفهرس للمتغير 'i' و 'j'. يتم استدعاء الأسلوب std :: iter_swap الذي يأخذ iter1 و iter2 كوسيطة. يتم التصريح عن كل من iter1 و iter2 بالكلمة الأساسية التلقائية ولديهما عملية التكرار. طريقة الحلقة for تطبع القيم المبادلة لمصفوفة المتجه عند التنفيذ.
نجحت طريقة std :: iter_swap في تبديل قيم المتجهات المحددة.
مثال 4: برنامج استخدام بدون متغيرات مؤقتة للمبادلة
يوضح هذا المثال طريقة جديدة لمبادلة الأرقام في كود C ++ دون استخدام المتغيرات المؤقتة.
# تضميناستخدام اسم للمحطة ؛
int رئيسي ( )
{
int x1 = اثنين و x2 = 12 ؛
كوت << 'قبل المبادلة'. << endl ؛
كوت << 'x1 =' << x1 << ', x2 = ' << x2 << endl ؛
x1 = x1 + x2 ؛
x2 = x1 - x2 ؛
x1 = x1 * x2 ؛
كوت << ' \ن بعد المبادلة '. << endl ؛
كوت << 'x1 =' << x1 << ', x2 = ' << x2 << endl ؛
إرجاع 0 ؛ }
دعونا نفحص تشغيل هذا البرنامج. هنا ، أعلنا عن x1 و x2 ، اللذين تم ضبطهما في البداية بالرقم ، على التوالي. ثم ، باستخدام الصيغة x1 = x1 + x2 ، نضيف x1 و x2 ونضع النتيجة في x1. يشير هذا إلى أن x1 يساوي 2 زائد 12. لذلك ، الآن يساوي 14. ثم نطبق الصيغة x2 = x1 - x2. يشير هذا إلى أن x2 = 14 - 12. لذلك ، فإن x2 الآن تساوي 2. مرة أخرى ، نطبق الصيغة x1 = x1 - x2. يشير هذا إلى أن x1 = 14 - 2. لذلك ، x1 = 12 في النهاية. نتيجة لذلك ، تم تبديل الأرقام.
يتم عرض الرقم الذي تم تبديله قبل وبعد على شاشة المطالبة التالية.
استنتاج
هنا ، نراجع وصفًا كاملاً لـ swap () في C ++ ، واستخدامه ، وبعض الأمثلة التي توضح كيفية عمله. باستخدام وظيفة std :: swap () ، يمكن تبديل قيم متغيرين. تتضمن C ++ STL وظيفة مضمنة تسمى std :: swap (). يتم أيضًا شرح استدعاءات دالة المبادلة (T & متغير 1 ، T & متغير 2) حسب المرجع ، ومبادلة C ++ overloads () اعتمادًا على نوع متغيرات البيانات في هذا البرنامج التعليمي.