English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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().
الحجم هو حسابي.
لا يوجد تغيير.
المعامل يمكن الوصول إليها (النسخة الثابتة والغير ثابتة لا يمكن تعديلها للمحتويات).
زيارة عناصر المجموعة آمنة.
إذا تم إطلاق استثناء،فلا يوجد أي تغيير في المصدر.
دعونا نرى مثالاً بسيطاً للحصول على الحد الأدنى للключ المحدد:
#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.
دعونا نرى مثالاً بسيطاً لإزالة عناصر 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من الحد الأدنى (=)إلى الحد الأعلى (>)،ويعرض الباقي.
لننظر في مثال بسيط:
#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.
لننظر في مثال بسيط:
#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.