English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمية C++ الأساسية

تحكم في العملية C++

وظيفة C++

مجموعات C++ و 字رات

هياكل بيانات C++

فئات C++ و كائنات

مؤشرات C++

الوراثة C++

تعليمية STL C++

دليل مرجع C++

استخدام C++ set key_comp() و أمثلة

STL Set (الجمعيات) C++

C ++ set key_comp()يستخدم هذا الدالة لتحويل نسخة من العنصر المقارن، الذي يستخدمه حاوية set للتحقق من قيمة المفتاح.

يمكن استخدام العنصر المقارن للتحقق من قيمة المفتاح لكل عنصرين في حاوية. يتم تقديم هذا العنصر المقارن عند بناء العنصر، ويمكن أن يكون دليلاً على دالة أو دالة كائن. في كلا الحالتين، يقبل نفس نوعين من الأ 参数، وإذا كان الأول يأتي قبل الثاني، فإنه يعود true، وإلا يعود false.

الاحتياط: بشكل افتراضي، العنصر المقارن هو العنصر less، والقيمة التي يعودها تساوي قيمة运算符 <.

النحو

Key_compare key_comp() const;

الاحتياط: يعرف العنصر المخزن وظائف الأعضاء:

operator bool (const Key & _Left, const Key & _Right);

إذا كان _Left في المقدمة وترتيب الترتيب لا يتطابق مع _Right، فإنه يعود إلى true.

المتغيرات

لا يوجد.

القيمة المعدة

يستعيد مبدأ مقارنة المفاتيح.

معقد

لا يتغير.

صلاحية المبدأ

لا يوجد تغيير.

نزاع البيانات

يتم الوصول إلى المحتويات.

لا يمكن الوصول إلى أي عنصر مضمون: الوصول والتعديل معًا آمن.

الأمان من الاستثناء

إذا تم إطلاق استثناء، لن يتم إجراء أي تغيير في المحتويات.

مثال 1

لنلقي نظرة على مثال بسيط على مقارنة قيم المفاتيح:

#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.

مثال 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() المسمى).

مثال 3

لننظر في مثال بسيط:

#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.

مثال 4

لننظر في مثال بسيط:

#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.

STL Set (الجمعيات) C++