يوفر C++ إمكانية عرض متجه الأزواج وفرز متجه الأزواج. توجد حاوية في لغة C++ تحتوي على قيمتين تم تعيينهما لبعضهما البعض يُطلق عليهما 'الزوج' و'متجه الأزواج' وهو متجه يحتوي على العديد من هذه الأزواج بداخله. الفرز يعني ترتيب البيانات تصاعديًا أو تنازليًا وفقًا للمتطلبات. هنا، سوف نتعلم كيفية فرز متجهات الأزواج في برمجة C++. يمكننا فرز متجه الأزواج بترتيب 'تصاعدي' و'تنازلي' في لغة C++. يمكننا بسهولة فرز متجه الأزواج باستخدام طريقة 'sort()'. لنقم ببعض الرموز هنا لفرز متجهات الأزواج.
مثال 1:
لنبدأ الكود بتضمين ملف الرأس هنا وهو 'bits/stdc++.h'. بعد الحصول على ملف الرأس هذا، لا نحتاج إلى تضمين المزيد من ملفات الرأس لأنه يحتوي على جميع المكتبات الضرورية. بعد ذلك، نضيف مساحة الاسم 'std' ونستدعي الدالة 'main()'.
الآن، نعلن عن 'ناقل الأزواج' المسمى 'my_vect' ونضع نوع البيانات 'int' بحيث تكون البيانات التي ندخلها في هذه الأزواج هي نوع البيانات 'integer'. أسفل هذا، نقوم بتهيئة صفيفين بالاسمين 'my_arr1[]' و'my_arr2[]'. هنا، نقوم بتهيئة القيمتين الأولى والثانية للأزواج باستخدام قيم المصفوفة هذه. ثم نستخدم حلقة 'for' لإدخال هذه القيم في متجه الأزواج. هنا، نستخدم وظيفة 'push_back()' التي تساعد في إدراج القيم في نهاية المتجه. داخل هذه الدالة، نضع خيار 'make_pair' الذي يستخدم لبناء كائن الزوج بقيمتين 'my_arr1' و'my_arr2'.
بعد ذلك، نقوم بطباعة متجه الأزواج باستخدام حلقة 'for' مرة أخرى. هنا، تتم إضافة الكلمتين الرئيسيتين 'الأولى' و'الثانية' للحصول على القيمتين الأولى والثانية لمتجه الأزواج. يؤدي هذا إلى طباعة متجه الأزواج دون الفرز هنا. الآن، نستخدم الدالة 'sort()' لفرز متجهات الأزواج. هنا، يتم استخدام الدالتين 'begin()' و'end()' لتمرير بداية ونهاية متجه الأزواج إلى الدالة 'sort()' هذه.
بعد الفرز، نقوم بطباعة متجه الأزواج مرة أخرى باستخدام 'cout' ووضع الكلمتين الرئيسيتين الأولى والثانية مع 'my_vec[i]'. الآن، تتم طباعة المتجه المصنف للأزواج هنا أيضًا.
الكود 1:
#تتضمناستخدام اسم للمحطة؛
انت مين ( )
{
المتجه < زوج < أنت، أنت > > my_vect;
int my_arr1 [ ] = { 49 , عشرين , خمسة عشر , 56 } ;
int my_arr2 [ ] = { 37 , عشرين , 90 , 55 } ;
int num = sizeof ( my_arr1 ) / حجم ( my_arr1 [ 0 ] ) ;
ل ( كثافة العمليات أنا = 0 ; أنا < سواء أنا++ )
my_vect.push_back ( make_pair ( my_arr1 [ أنا ] ,my_arr2 [ أنا ] ) ) ;
cout << 'قبل فرز متجهات الأزواج:' << نهاية؛
ل ( كثافة العمليات أنا = 0 ; أنا < سواء أنا++ )
{
cout << my_vect [ أنا ] .أولاً << ' '
<< my_vect [ أنا ] .ثانية << نهاية؛
}
نوع ( my_vect.begin ( ) , my_vect.end ( ) ) ;
cout << ' \ن بعد فرز متجهات الأزواج: ' << نهاية ;
ل ( كثافة العمليات أنا = 0 ; أنا < سواء أنا++ )
{
cout << my_vect [ أنا ] .أولاً << ' '
<< my_vect [ أنا ] .ثانية << نهاية؛
}
يعود 0 ;
}
انتاج:
يتم عرض متجه الأزواج قبل الفرز أولاً. ثم نطبق تقنية الفرز على ناقل الأزواج هذا. بعد ذلك، يتم عرض المتجه المصنف للأزواج هنا أيضًا. يمكننا أن نرى أن متجه الأزواج يتم ترتيبه تصاعديًا بناءً على العنصر الأول من الزوج.
مثال 2:
في هذا المثال، نقوم الآن بإنشاء 'متجه للأزواج' يسمى 'vector_1' وقمنا بتعيين نوع البيانات 'int' مما يعني أن المعلومات التي ندخلها في هذه الأزواج هي من نوع البيانات 'integer'. تتم تهيئة صفيفين بالأسماء 'first_arr[]' و' Second_arr []' فيما يلي. هنا، نقوم بتهيئة قيم هذه المصفوفات لقيم الزوجين الأول والثاني.
بعد ذلك، نقوم بإدخال هذه القيم في متجه الأزواج باستخدام حلقة 'for'. يتم وضع خيار 'make_pair'، الذي يستخدم لإنشاء كائن زوج من قيمتين من المصفوفتين 'first_arr[]' و' Second_arr[]'، داخل طريقة 'push_back()' التي تساعد على إدراج العناصر في نهاية المتجه.
بعد ذلك، نستخدم حلقة 'for' مرة أخرى لإخراج متجه الأزواج. للحصول على القيمتين الأولى والثانية لمتجه الأزواج، يتم إدراج الكلمتين الرئيسيتين 'الأولى' و'الثانية'. يؤدي هذا إلى إخراج متجه الزوج دون أي فرز في هذه المرحلة. نقوم الآن بفرز 'ناقل الأزواج' باستخدام دالة 'sort()' بترتيب تنازلي. في هذه الدالة، نضع الدالتين “rbegin()” و “rend()” بحيث يعكس الترتيب ويبدأ من نهاية قيم الزوج. ويرتبهم ترتيبا تنازليا.
بعد الفرز، نستخدم 'cout' لإخراج متجه الأزواج بعد استخدام حلقة 'for' مرة أخرى، وإدراج الكلمتين الأساسيتين الأولى والثانية مع 'vector_1[i]' في 'cout'. هذا هو المكان الذي تتم فيه أيضًا طباعة المتجهات التي تم فرزها.
الكود 2:
#تتضمناستخدام اسم للمحطة؛
انت مين ( )
{
المتجه < زوج < أنت، أنت > > Vector_1;
int first_arr [ ] = { 77 , 29 , 97 , خمسة عشر } ;
int Second_arr [ ] = { 35 , 89 , 64 , 25 } ;
int s = sizeof ( first_arr ) / حجم ( first_arr [ 0 ] ) ;
ل ( إنت ط = 0 ; أنا < س؛ أنا++ )
Vector_1.push_back ( make_pair ( first_arr [ أنا ] , Second_arr [ أنا ] ) ) ;
cout << 'قبل الفرز:' << نهاية؛
ل ( إنت ط = 0 ; أنا < س؛ أنا++ ) {
cout << Vector_1 [ أنا ] .أولاً << ' ' << Vector_1 [ أنا ] .ثانية
<< نهاية؛
}
نوع ( Vector_1.rbegin ( ) , Vector_1.rend ( ) ) ;
cout << endl << 'بعد الفرز:' << نهاية؛
ل ( إنت ط = 0 ; أنا < س؛ أنا++ ) {
cout << Vector_1 [ أنا ] .أولاً << ' ' << Vector_1 [ أنا ] .ثانية
<< نهاية؛
}
يعود 0 ;
}
انتاج:
يظهر هنا أولاً متجه الفرز المسبق للأزواج، متبوعًا بالمتجه الذي تم فرزه للأزواج والذي يظهر أيضًا هنا بعد تطبيق عملية الفرز عليه. كما نرى، يحدد العنصر الأولي لكل زوج كيفية ترتيب متجهات الأزواج بترتيب تنازلي.
مثال 3:
هنا، نقوم بإنشاء دالة من النوع 'bool' تسمى 'sortBySecElement' لفرز أرقام المتجهات. في هذه الدالة، نضع شرطًا، 'القيمة1.الثانية < القيمة2.الثانية'، الذي يقارن القيم الثانية لكلا متجهي الأزواج ويعيد الأرقام.
بعد ذلك، يتم استدعاء 'main()' فيما يلي حيث نقوم بإنشاء متجه الأزواج. يقوم ما يلي بتهيئة صفيفين باسم 'new_array1[]' و'new_aray2[]'. هنا، نقوم بإدراج قيم الأزواج في هذه المصفوفات. بعد ذلك، نستخدم حلقة 'for' لإدخال هذه القيم في متجه الأزواج. داخل طريقة 'push_back()'، التي تساعد في إدراج العناصر في نهاية المتجه، يوجد خيار 'make_pair' الذي يتم استخدامه لإنشاء كائن الزوج لقيمتين من 'new_array1[]' و'new_array2[ ]' المصفوفات.
نقوم بعد ذلك بإخراج متجه الأزواج باستخدام حلقة 'for' أخرى. يتم إدراج الكلمتين الأساسيتين 'الأولى' و'الثانية' للحصول على القيمتين الأولى والثانية لمتجه الأزواج. لا يتم إجراء أي فرز في هذه المرحلة، ويتم إخراج المتجه الزوجي. نستخدم الآن الدالة 'sort()' لفرزها. يتم توفير بداية ونهاية متجه الأزواج إلى الدالة 'sort()' في هذه الحالة عبر استخدام الدالتين 'begin()' و'end()'. نضع أيضًا وظيفة 'sortBySecElement' التي أنشأناها سابقًا داخل وظيفة 'sort()' هذه حيث قمنا بتعيين نمط فرز متجه الأزواج من العنصر الثاني للمتجه بترتيب تصاعدي.
الآن، نستخدم حلقة 'for' مرة أخرى. بعد ذلك، يتم إدراج الكلمتين الأساسيتين الأولى والثانية مع 'new_vec[i]' في 'cout' لإنتاج متجه الأزواج مرة أخرى بعد الفرز. هذا هو المكان الذي تتم فيه الآن طباعة المتجه المصنف للأزواج بترتيب تصاعدي.
الكود 3:
#تتضمناستخدام اسم للمحطة؛
منطقي فرزBySecElement ( زوج ثابت < أنت، أنت > & القيمة 1,
زوج ثابت < أنت، أنت > & القيمة2 )
{
يعود ( value1.sec < value2. Second ) ;
}
انت مين ( )
{
المتجه < زوج < أنت، أنت > > شيء جديد
كثافة العمليات new_arr1 [ ] = { 3. 4 , 29 , 65 , 48 } ;
كثافة العمليات new_arr2 [ ] = { 67 , 19 , 54 , 7 } ;
قيمة كثافة العمليات = sizeof ( new_arr1 ) / حجم ( new_arr1 [ 0 ] ) ;
ل ( كثافة العمليات أنا = 0 ; أنا < قيمة؛ أنا++ )
new_vec.push_back ( make_pair ( new_arr1 [ أنا ] ,new_arr2 [ أنا ] ) ) ;
cout << 'قبل الفرز:' << نهاية ;
ل ( كثافة العمليات أنا = 0 ; أنا < قيمة؛ أنا++ )
{
cout << شيء جديد [ أنا ] .أولاً << ' '
<< شيء جديد [ أنا ] .ثانية << نهاية؛
}
نوع ( new_vec.begin ( ) , new_vec.end ( ) ، فرز حسبSecElement ) ;
cout << endl << 'بعد الفرز:' << نهاية ;
ل ( كثافة العمليات أنا = 0 ; أنا < قيمة؛ أنا++ )
{
cout << شيء جديد [ أنا ] .أولاً << ' '
<< شيء جديد [ أنا ] .ثانية << نهاية؛
}
يعود 0 ;
}
انتاج:
هنا، يتم عرض المتجه المفرز للأزواج، ويتم الفرز وفقًا للقيم الثانية للأزواج. يتم تخزين العنصر الثاني من الأزواج بترتيب تصاعدي ويتم عرضه هنا.
خاتمة
يدور هذا الدليل حول 'متجه الفرز للأزواج' في لغة C++. لقد استكشفنا 'متجه الأزواج' بدون فرز وكذلك فرز 'متجه الأزواج' بترتيب تصاعدي وتنازلي. وقد أوضحنا ذلك بالأمثلة التي نقوم فيها بفرز 'متجه الأزواج' حسب الرقم الأول والثاني لهذه الأزواج في برمجة C++. لقد تعلمنا أن طريقة 'sort()' تساعد في القيام بهذا الفرز.