English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set key_comp()يستخدم هذا الدالة لتحويل نسخة من العنصر المقارن، الذي يستخدمه حاوية set للتحقق من قيمة المفتاح.
يمكن استخدام العنصر المقارن للتحقق من قيمة المفتاح لكل عنصرين في حاوية. يتم تقديم هذا العنصر المقارن عند بناء العنصر، ويمكن أن يكون دليلاً على دالة أو دالة كائن. في كلا الحالتين، يقبل نفس نوعين من الأ 参数، وإذا كان الأول يأتي قبل الثاني، فإنه يعود true، وإلا يعود false.
Key_compare key_comp() const;
operator bool (const Key & _Left, const Key & _Right);
إذا كان _Left في المقدمة وترتيب الترتيب لا يتطابق مع _Right، فإنه يعود إلى true.
لا يوجد.
يستعيد مبدأ مقارنة المفاتيح.
لا يتغير.
لا يوجد تغيير.
يتم الوصول إلى المحتويات.
لا يمكن الوصول إلى أي عنصر مضمون: الوصول والتعديل معًا آمن.
إذا تم إطلاق استثناء، لن يتم إجراء أي تغيير في المحتويات.
لنلقي نظرة على مثال بسيط على مقارنة قيم المفاتيح:
#include <iostream> #include <set> using namespace std; int main () { set<int> m; set<int>::key_compare comp = m.key_comp(); cout << "مقارنة المفاتيح (1 صحيح،0 خطأ): " << comp(1, 5) << endl; cout << "مقارنة المفاتيح (1 صحيح،0 خطأ): " << comp(3, 2) << endl; }
输出:
مقارنة المفاتيح (1 صحيح،0 خطأ): 1 مقارنة المفاتيح (1 صحيح،0 خطأ): 0
في المثال السابق، يعود comp(1،5) إلى true لأن 1 أقل من 5. يعود comp(3،2) إلى false لأن 3 أكبر من 2.
لننظر في مثال بسيط:
#include <iostream> #include <set> using namespace std; int main () { set<int> myset; int highest; set<int>::key_compare mycomp = myset.key_comp(); for (int i = 0; i <= 5; i++) myset.insert(i); cout << "myset تحتوي على:"; highest = *myset.rbegin(); set<int>::iterator it = myset.begin(); do { cout << ' ' << *it; }; while (mycomp(*(++it), highest)); std::cout << '\n'; return 0; }
输出:
تتضمن myset: 0 1 2 3 4
في المثال السابق، يتم تخزين العنصر الأخير في مجموعة myset، ويتم تثبيت مبدأ الاستدلال باستخدام العنصر الأول في المجموعة (حسب الترتيب المحدد) عبر استخدام مبدأ التحقق mycomp() المسمى. يتم استخدام دورة do-while لطباعة العناصر التي سيتم تشغيل الدورة فيها حتى يتمكن من الوصول إلى المفتاح الأول أقل من المفتاح الأخير (لتحقيق ذلك، يستخدم دالة mycomp() المسمى).
لننظر في مثال بسيط:
#include <set> #include <iostream> int main() { using namespace std; set<int, less<int>> s1; set<int, less<int>>::key_compare kc1 = s1.key_comp(); bool result1 = kc1(2, 3); if(result1 == true) { cout << "kc1(2,3) تعود القيمة true" cout << "kc1 هو كائن الخصائص الكميّة في s1."; endl; } else { cout << "kc1(2,3) تعود القيمة false "; cout << "kc1 هو كائن الخصائص الكميّة في s1."; endl; } set<int, greater<int>> s2; set<int, greater<int>>::key_compare kc2 = s2.key_comp(); bool result2 = kc2(2, 3); if(result2 == true) { cout << "kc2(2,3) تعود القيمة true, "; cout << "kc2 هو كائن الخصائص الكميّة في s2."; endl; } else { cout << "kc2(2,3) تعود القيمة false, "; cout << "kc2 هو كائن الخصائص الكميّة في s2."; endl; } }
输出:
kc1(2,3) تعود القيمة true، حيث kc1 هو كائن الخصائص الكميّة في s1. kc2(2,3) تعود القيمة false، حيث kc2 هو كائن الخصائص الكميّة في s2.
في المثال السابق، تم استخدام مجموعتين، وهي m1 و m2. كان كائن مقارنة المفتاح في m1 أصغر من كائن مقارنة المفتاح في m2. لذلك، عند مقارنة (2،3)، أعاد الكائن المميز kc1 في m1 القيمة true، بينما أعاد الكائن المميز kc2 في m2 القيمة false.
لننظر في مثال بسيط:
#include <set> #include <iostream> #include <string> using namespace std; typedef set<int> setObj; int main() { //بناء الجسم البديهي setObj c1; setObj::key_compare kc = c1.key_comp(); cout << "استخدام كائن الخصائص الكمية kc للبحث في المقارنة (10,4)..." endl; if (kc(10, 4) == true) cout << "kc(10,4)== true,即10 <4" << endl ; else cout << "kc(10,4) == false,即10 > 4" << endl ; return 0; }
输出:
使用函数对象kc查找比较(10,4)... kc(10,4) == false، أي 10 > 4
في المثال أعلاه، يقوم الكائن set setobj بتنفيذ compare (10،4)، إذا كان true، فإنه يعود 10 <4؛ وإذا لم يكن true، فإنه يعود 10> 4.