Lower_bound() طریقہ کیا ہے؟
C++ میں Lower_bound() طریقہ ترتیب شدہ کنٹینر میں دی گئی قدر کی پہلی موجودگی کو تلاش کرتا ہے۔ یہ C++ میں
نحو
C++ میں Lower_bound() طریقہ میں دو تغیرات ہیں: ایک ڈیفالٹ اور ایک حسب ضرورت نحو۔
ڈیفالٹ نحو
پہلے سے طے شدہ نحو ایک ForwardIterator میں لیتا ہے جو بالترتیب تلاش کیے جانے والے رینج کے پہلے اور پچھلے عناصر کی طرف اشارہ کرتا ہے، اور رینج میں عناصر کا موازنہ کرنے کے لیے ایک قدر۔
ForwardIterator low_bound ( ForwardIterator پہلے , ForwardIterator آخری , const ٹی اور val ) ;
حسب ضرورت نحو
حسب ضرورت نحو اضافی طور پر صارف کی وضاحت کردہ بائنری پریڈیکیٹ فنکشن میں لیتا ہے جو عناصر کو ترتیب دینے کے لیے سخت کمزور ترتیب کی پیروی کرتا ہے۔
ForwardIterator low_bound ( ForwardIterator پہلے , ForwardIterator آخری , const ٹی اور val , کمپیئر کا موازنہ کریں۔ ) ;
پیرامیٹرز
C++ میں Lower_bound() طریقہ تین پیرامیٹرز لیتا ہے۔
پہلا آخری: پہلے دو پیرامیٹرز، 'پہلا' اور 'آخری'، اس حد کا تعین کرتے ہیں [پہلا، آخری) جس کے اندر طریقہ نچلی حد کو تلاش کرتا ہے۔ رینج کو دو پیرامیٹرز کے ذریعے متعین کیا گیا ہے، یعنی 'پہلا' اور 'آخری'۔ رینج میں 'پہلے' اور 'آخری' تکرار کنندگان کے درمیان تمام عناصر شامل ہیں لیکن 'آخری' تکرار کنندہ کے ذریعہ اشارہ کردہ عنصر کو خارج کر دیتا ہے۔
val: Lower_bound() طریقہ کے تیسرے پیرامیٹر کو 'val' کہا جاتا ہے۔ یہ نچلی حد کی قدر کی نمائندگی کرتا ہے جسے مخصوص حد کے اندر تلاش کرنے کی ضرورت ہے۔ جب Lower_bound() طریقہ کہا جاتا ہے، تو یہ کنٹینر کی مخصوص رینج کے اندر پہلے عنصر کو تلاش کرتا ہے جو دی گئی قدر 'val' سے زیادہ یا اس کے برابر ہو۔
comp: Lower_bound() طریقہ بائنری موازنہ فنکشن کو اپنے چوتھے پیرامیٹر کے طور پر بھی قبول کر سکتا ہے۔ یہ دو دلائل لیتا ہے: قسم کی طرف سے اشارہ کیا ForwardIterator ، اور دوسرا ہے val . فنکشن پھر دو دلائل کے درمیان موازنہ کی بنیاد پر بولین ویلیو لوٹاتا ہے۔ comp argument اپنے کسی بھی دلیل کو تبدیل نہیں کرتا ہے اور یہ صرف ایک فنکشن پوائنٹر یا فنکشن آبجیکٹ ہوسکتا ہے۔
واپسی کی قیمت
Lower_bound() ایک تکرار کرنے والا لوٹاتا ہے جو پہلے عنصر کی طرف اشارہ کرتا ہے جو اس سے بڑا یا اس کے برابر ہوتا ہے۔ val . اگر کنٹینر کی مخصوص رینج میں تمام عناصر دی گئی قدر سے چھوٹے ہیں۔ val ، low_bound() طریقہ رینج میں آخری عنصر کی طرف اشارہ کرنے والا ایک تکراری لوٹاتا ہے، اور اگر تمام عناصر اس سے زیادہ ہیں val ، یہ ایک تکرار کرنے والا دیتا ہے جو رینج میں پہلے عنصر کی طرف اشارہ کرتا ہے۔
مثال کا کوڈ
یہ C++ کوڈ std::lower_bound() فنکشن کے استعمال کو ظاہر کرتا ہے تاکہ ترتیب شدہ ویکٹر میں پہلا عنصر تلاش کیا جا سکے جو دی گئی قدر سے کم نہ ہو۔
#includeint مرکزی ( )
{
// ان پٹ ویکٹر
std :: ویکٹر < دگنا > اقدار { 10 , پندرہ , بیس , 25 , 30 } ;
// پرنٹ ویکٹر
std :: cout << 'ویکٹر پر مشتمل ہے:' ;
کے لیے ( غیر دستخط شدہ int میں = 0 ; میں < اقدار سائز ( ) ; میں ++ )
std :: cout << ' << اقدار [ میں ] ;
std :: cout << ' \n ' ;
std :: ویکٹر < دگنا >:: تکرار کرنے والا یہ1 , یہ2 , یہ3 ;
// std :: low_bound
یہ1 = std :: low_bound ( اقدار شروع ( ) , اقدار اختتام ( ) , 13 ) ;
یہ2 = std :: low_bound ( اقدار شروع ( ) , اقدار اختتام ( ) , 23 ) ;
یہ3 = std :: low_bound ( اقدار شروع ( ) , اقدار اختتام ( ) , 33 ) ;
std :: cout
<< ' \n پوزیشن پر عنصر 13 کے لیے low_bound: '
<< ( یہ1 - اقدار شروع ( ) ) ;
std :: cout
<< ' \n پوزیشن پر عنصر 23 کے لیے low_bound: '
<< ( یہ2 - اقدار شروع ( ) ) ;
std :: cout
<< ' \n پوزیشن پر عنصر 33 کے لیے low_bound: '
<< ( یہ3 - اقدار شروع ( ) ) ;
واپسی 0 ;
}
کوڈ کا آغاز ایک std:: ویکٹر کی قسم کی ڈبل نام والی اقدار کے ساتھ اور اسے کچھ اقدار کے ساتھ شروع کرنے سے ہوتا ہے۔ یہ پھر لوپ کے لیے ویکٹر کے عناصر کو پرنٹ کرتا ہے۔
اگلا، کوڈ تین std::vector
std::lower_bound() فنکشن کو تین مختلف ویلیوز کے ساتھ بلایا جاتا ہے: 13، 23، اور 33۔ ہر کال پر، Lower_bound() ایک ایٹریٹر دیتا ہے جو ویکٹر کے پہلے عنصر کی طرف اشارہ کرتا ہے جو اس سے بڑا یا اس کے برابر ہوتا ہے۔ مخصوص قیمت.
کوڈ پھر std::lower_bound() کے ذریعے واپس آنے والے iterator سے values.begin() iterator کو گھٹا کر ویکٹر میں ان عناصر کی پوزیشن پرنٹ کرتا ہے، جو ویکٹر میں عنصر کا انڈیکس دیتا ہے۔
آؤٹ پٹ
نتیجہ
C++ میں Lower_bound() طریقہ ترتیب شدہ کنٹینر میں دی گئی قدر کی پہلی موجودگی کو تلاش کرتا ہے۔ یہ C++ میں