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

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

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

الوظائف في C++

مجموعات C++ و سلاسل

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

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

المراجع في C++

الوراثة في C++

تعليميات STL في C++

دليل مرجع C++

استخدام C++ set lower_bound() و مثال

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

C ++ set lower_bound()يستخدم الدالة للعودة إلى م迭代رًا يُشير إلى المفتاح في حاوية set الذي يعادله val المُنقل.

إذا لم يكن val موجودًا في حاوية التجميع، فإنه سيعود م迭代رًا يُشير إلى العنصر التالي الأكبر من val.

النحو

iterator lower_bound(const value_type& val);                        // قبل C++ 11
iterator lower_bound(const value_type& val);                        // قبل C++ 11
const_iterator lower_bound(const value_type& val) const;      // من بداية C++ 11

المعامل

valالقيمة التي يتم البحث عنها في حاوية الإعداد.

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

يستعيد م迭代ر يشير إلى قيمة في حاوية الإعداد،المساوية للقيمة التي تم تمريرها كمعامل.إذا لم يكن هناك مثل هذا العنصر،فيعود end().

معقد

الحجم هو حسابي.

صلاحية الم迭代ر

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

الصراع البياني

المعامل يمكن الوصول إليها (النسخة الثابتة والغير ثابتة لا يمكن تعديلها للمحتويات).

زيارة عناصر المجموعة آمنة.

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

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

مثال 1

دعونا نرى مثالاً بسيطاً للحصول على الحد الأدنى للключ المحدد:

#include<iostream>
#include<set>
using namespace std;
int main(void) {
   set<char> m = {'a','b','c','d','e'};
          
   auto it = m.lower_bound('c');
   cout << "الحد الأدنى (=) " << *it;
   return 0;
}

الإخراج:

الحد الأدنى (=) c

في المثال السابق،الحد الأدنى لc هو c.

مثال 2

دعونا نرى مثالاً بسيطاً لإزالة عناصر setمن الحد الأدنى إلى الحد الأعلى:

#include<iostream>
#include<set>
using namespace std;
int main()
{
  set<int> myset;
  set<int>::iterator itlow,itup;
  for (int i=1; i<10; i++) myset.insert(i*10); // 10 20 30 40 50 60 70 80 90
  itlow=myset.lower_bound(30); // ^
  itup=myset.upper_bound(60); // ^
  myset.erase(itlow,itup); // 10 20 70 80 90
  std::cout << "myset contains:";
  for (set<int>::iterator it=myset.begin(); it!=myset.end(); ++it)
    cout << ' ' << *it;
  cout << '\n';
  return 0;
}

الإخراج:

myset يحتوي على: 10 20 70 80 90

في المثال السابق،�数ون delete()يحذف عنصر setمن الحد الأدنى (=)إلى الحد الأعلى (>)،ويعرض الباقي.

مثال 3

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

#include<set>  
#include<iostream>  
using namespace std;
  
int main()  
{  
   using namespace std;  
   set<int> s1;  
   set<int>::const_iterator s1_AcIter, s1_RcIter;  
  
   s1.insert(10);  
   s1.insert(20);  
   s1.insert(30);  
  
   s1_RcIter = s1.lower_bound(20);  
   cout << "العنصر المفتاح 20 في مجموعة s1 هو: "  
        << *s1_RcIter << "." << endl;  
  
   s1_RcIter = s1.lower_bound(40);  
  
   //إذا لم يتم العثور على مفتاح مطابق، يتم العودة إلى end()
   if (s1_RcIter == s1.end())  
      cout << "مجموعة s1 لا تحتوي على عنصر مفتاحه 40." << endl;  
   else  
      cout << "العنصر في مجموعة s1 والمفتاح 40 هو: "  
           << *s1_RcIter << "." << endl;  
  
     //يمكن العثور على عنصر محدد في المجموعة
    //استخدام م迭代ر مغير الاستدلال لتحديد الموقع 
   s1_AcIter = s1.end();  
   s1_AcIter--;  
   s1_RcIter = s1.lower_bound(*s1_AcIter);  
   cout << "العنصر الذي يطابق مفتاح العنصر الأخير في s1 هو:"  
        << *s1_RcIter << "." << endl;  
        
        return 0;
}

الإخراج:

العنصر المفتاح 20 في مجموعة s1 هو: 20.
مجموعة s1 لا تحتوي على عنصر مفتاحه 40.
العنصر الذي يطابق مفتاح العنصر الأخير في مجموعة s1 هو: 30.

مثال 4

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

#include<set>
#include<iostream>
using namespace std;
 
int main()
{
 
    set<int> mp; 
    //إدراج العناصر بشكل ترتيب عشوائي
    mp.insert(2);
    mp.insert(1);
    mp.insert(5);
    mp.insert(4);
    
    cout << "العنصر هو: \n";
    for (auto it = mp.begin(); it != mp.end(); it++) {
        cout << (*it) << endl;
    }
 
    //عند وجود 2
    auto it = mp.lower_bound(2);
    cout << "حد أدنى مفتاح 2 هو \"";
    cout << (*it) << endl;
 
     //عند عدم وجود 3
     //الإشارة إلى النقطة التالية الأكبر بعد 3
    it = mp.lower_bound(3);
    cout << "الحد الأدنى للключ 3 هو ";
    cout << (*it) << endl;
 
    // عندما يتجاوز 6
    it = mp.lower_bound(6);
    cout << "الحد الأدنى للключ 6 هو ";
    cout << (*it);
    
    return 0;
}

الإخراج:

النقطة هي: 
1
2
4
5
الحد الأدنى للключ 2 هو 2
الحد الأدنى للключ 3 هو 4
الحد الأدنى للключ 6 هو 4

في الأمثلة أعلاه، عندما نحاول البحث عن القيمة تحت قيمة الحاوية، أو يمكن القول إن القيمة غير موجودة في حاوية set، فإنها تعود إلى end.

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