C++ Unordered_Map::Find() فنکشن

C Unordered Map Find Fnkshn



C++ اپنی طاقتور اور ورسٹائل معیاری ٹیمپلیٹ لائبریری (STL) کے لیے مشہور ہے، جو ڈویلپرز کو استعمال کے لیے تیار، انتہائی موثر کنٹینرز، تکرار کرنے والوں، الگورتھم اور فنکشنز کا ایک وسیع مجموعہ فراہم کرتا ہے۔ ان میں سے، 'unordered_map' موثر کلیدی قدر اسٹوریج اور تیز رفتار رسائی میں ایک اہم کھلاڑی کے طور پر نمایاں ہے، جس سے یہ ایپلی کیشنز کے لیے بہترین انتخاب ہے جہاں تیزی سے بازیافت سب سے اہم ہے۔ اس 'unordered_map' کے دل میں، unordered_map::find() فنکشن ایک اہم آلہ ہے۔ یہ ڈیٹا ڈھانچہ تیز رفتار رسائی اور کلیدی قدر کے اسٹوریج کے لیے موزوں ہے۔ یہ مضمون مثالی مثالوں کی مدد سے اس کے نحو اور پیرامیٹرز کی نقاب کشائی کرکے unordered_map::find() فنکشن کا ایک جامع امتحان پیش کرتا ہے۔

غیر ترتیب شدہ_نقشہ کو سمجھنا::Find()

unordered_map::find() فنکشن کو ایک ایسے عنصر کو تلاش کرنے کے لیے ڈیزائن کیا گیا ہے جو 'unordered_map' کے اندر ایک مخصوص کلید سے وابستہ ہے۔ اس کا اعلان اس بنیاد پر مختلف ہوتا ہے کہ آیا شے مستقل طور پر اہل ہے یا نہیں، اس کے استعمال میں لچک فراہم کرتی ہے۔

تکرار کرنے والا تلاش کریں۔ ( const key_type اور ک ) ;

یہ اس وقت استعمال ہوتا ہے جب 'غیر ترتیب شدہ_ نقشہ' مستقل طور پر اہل نہ ہو۔ یہ کوڈ ایک تکرار کرنے والا لوٹاتا ہے جو پائے جانے والے عنصر کی طرف اشارہ کرتا ہے۔







const_iterator تلاش کریں۔ ( const key_type اور ک ) const ;

یہ ورژن اس وقت لاگو ہوتا ہے جب 'unordered_map' مستقل طور پر اہل ہو۔ یہ غیر مستقل ورژن سے ملتے جلتے سلوک کے ساتھ ایک مستقل تکرار کرنے والا واپس کرتا ہے۔



پیرامیٹرز:



یہ ایک واحد پیرامیٹر لیتا ہے، 'k'، جو 'unordered_map' کے اندر تلاش کرنے کی کلید ہے۔





واپسی کی قیمت:

واپسی کی قیمت 'unordered_map' آبجیکٹ کی اہلیت پر منحصر ہے۔

اگر شے مستقل طور پر اہل نہیں ہے تو طریقہ ایک غیر مستقل تکرار کرنے والا واپس کرتا ہے۔



اگر آبجیکٹ مستقل طور پر اہل ہے، تو طریقہ ایک مستقل تکرار کرنے والا لوٹاتا ہے۔

وقت کی پیچیدگی:

std::unordered_map::find() کی وقت کی پیچیدگی اس کی کارکردگی کو سمجھنے کے لیے بہت اہم ہے۔

اوسط صورت میں، وقت کی پیچیدگی مستقل ہے (O(1))، جو اسے عام استعمال کے معاملات کے لیے انتہائی موثر بناتی ہے۔

بدترین صورت حال میں، وقت کی پیچیدگی لکیری ہو جاتی ہے (O(n))۔ تاہم، یہ منظر عملی طور پر نایاب ہے.

مثال 1:

آئیے unordered_map::find() کے استعمال اور فوائد کو واضح کرنے کے لیے ایک عملی مثال دیکھیں۔ اس مثال میں، ایک 'unordered_map' کو حروف کے بطور کلید اور متعلقہ عدد کو قدروں کے ساتھ بنایا گیا ہے۔ find() فنکشن اس عنصر کو تلاش کرتا ہے جو 'p' کی کلید سے منسلک ہے۔ 'ittr' iterator پائے گئے عنصر سے منسلک ہوتا ہے اور اس کا ڈیٹا کنسول پر پرنٹ کیا جاتا ہے۔ درج ذیل کوڈ دیکھیں:

# شامل کریں

#include

نام کی جگہ کا استعمال کرتے ہوئے std ;

int مرکزی ( باطل ) {

unordered_map < چار ، int > unomp = {

{ 'میں' ، 9 } ،

{ 'a' ، 6 } ،

{ 'p' ، 8 } ،

{ 'میں' ، 3 } ،

{ 's' ، 4 } } ;

آٹو ittr = unomp مل ( 'p' ) ;

cout << 'دوبارہ کرنے والا' '< پہلے <<' 'پوائنٹس کی طرف =' << ittr -> دوسرا << endl ;

واپسی 0 ; }

آئیے اس کی واضح اور بہتر تفہیم کے لیے کوڈ کو توڑتے ہیں:

# شامل کریں

#include

ضروری ہیڈر فائلیں شامل ہیں: ان پٹ/آؤٹ پٹ آپریشنز کے لیے اور 'unordered_map' کنٹینر استعمال کرنے کے لیے ۔

نام کی جگہ کا استعمال کرتے ہوئے std ;

'std' نام کی جگہ کوڈ کو آسان بناتی ہے۔ یہ آپ کو معیاری C++ لائبریری کے عناصر کو 'std::' کے ساتھ سابقہ ​​لگائے بغیر استعمال کرنے دیتا ہے۔

unordered_map < چار ، int > unomp = { { 'میں' ، 9 } ، { 'a' ، 6 } ، { 'p' ، 8 } ، { 'میں' ، 3 } ، { 's' ، 4 } } ;

'um' نام کا ایک 'غیر ترتیب شدہ_ نقشہ' حروف ('w', 'a', 'p', 'm', 's') بطور کلید اور متعلقہ عدد (9, 6, 8, 3, 4) کے ساتھ بنایا گیا ہے۔ ) قدروں کے طور پر۔

آٹو ittr = unomp مل ( 'p' ) ;

find() فنکشن کو 'unordered_map' میں 'p' کی کلید کے ساتھ عنصر کو تلاش کرنے کے لیے استعمال کیا جاتا ہے جو کہ 'unomp' ہے۔ 'ittr' تکرار کنندہ شناخت شدہ عنصر کی طرف اشارہ کرتا ہے۔

cout << 'دوبارہ کرنے والا' '< پہلے <<' 'پوائنٹس کی طرف =' << ittr -> دوسرا << endl ;

ایٹریٹر کے ذریعہ جس مواد کی طرف اشارہ کیا گیا ہے وہ کنسول پر پرنٹ کیا جاتا ہے۔ یہ اس معاملے میں کلید ('p') اور متعلقہ قدر (8) پرنٹ کرتا ہے۔

واپسی 0 ;

پروگرام ختم ہو جاتا ہے، کامیاب عمل درآمد کی نشاندہی کرنے کے لیے 0 واپس آتا ہے۔

آپ کے حوالہ کے لیے کوڈ کا آؤٹ پٹ درج ذیل میں دیا گیا ہے۔

یہ کوڈ unordered_map::find() کو استعمال کرنے کی ایک سادہ مثال ہے تاکہ ایک 'unordered_map' کے اندر موجود عناصر کو مؤثر طریقے سے تلاش اور ان تک رسائی حاصل کی جا سکے۔ تکرار کنندہ پایا عنصر کی کلید اور متعلقہ قدر دونوں تک رسائی کا ایک آسان طریقہ فراہم کرتا ہے۔

مثال 2:

یہاں unordered_map::find() فنکشن کی ایک اور سادہ مثال ہے۔ یہ کوڈ انٹیجر کیز کے ساتھ منسلک بولین ویلیوز کو اسٹور کرنے کے لیے 'unordered_map' کے استعمال کو ظاہر کرتا ہے اور پھر مخصوص کلیدوں کے وجود کو چیک کرنے کے لیے find() فنکشن کا استعمال کرتا ہے۔ آئیے درج ذیل کوڈ کو دیکھیں اور پھر سمجھیں کہ یہ کیسے کام کرتا ہے:

#include

نام کی جگہ کا استعمال کرتے ہوئے std ;

int مرکزی ( ) {

unordered_map < int ، bool > unomp ;

unomp [ 2 ] = سچ ;

unomp [ 67 ] = جھوٹا ;

unomp [ چار پانچ ] = سچ ;

unomp [ 98 ] = جھوٹا ;

اگر ( unomp مل ( 67 ) == unomp اختتام ( ) )

cout << 'عنصر نہیں ملا' << endl ;

اور

cout << 'عنصر ملا' << endl ;

اگر ( unomp مل ( 42 ) == unomp اختتام ( ) )

cout << 'عنصر نہیں ملا' << endl ;

اور

cout << 'عنصر ملا' << endl ;

واپسی 0 ;

}

یہاں کوڈ کی تفصیلی وضاحت ہے:

#include

اس لائن میں ایک ہیڈر فائل شامل ہے جو سب سے معیاری C++ لائبریریوں کا احاطہ کرتی ہے جو اکثر مسابقتی پروگرامنگ میں استعمال ہوتی ہیں۔ تاہم، باقاعدہ C++ ترقی میں، مخصوص ہیڈر کو شامل کرنے کی سفارش کی جاتی ہے۔

unordered_map < int ، bool > unomp ;

ایک 'unordered_map' نامی 'unomp' انٹیجر کیز اور بولین ویلیوز کے ساتھ بنایا گیا ہے۔

unomp [ 2 ] = سچ ;

unomp [ 67 ] = جھوٹا ;

unomp [ چار پانچ ] = سچ ;

unomp [ 98 ] = جھوٹا ;

کلیدی قدر کے جوڑے 'غیر ترتیب شدہ_نقشہ' میں داخل کیے جاتے ہیں۔ ہر کلید (انٹیجر) بولین ویلیو سے وابستہ ہے۔

اگر ( unomp مل ( 67 ) == unomp اختتام ( ) )

cout << 'عنصر نہیں ملا' << endl ;

اور

cout << 'عنصر ملا' << endl ;

find() فنکشن کو if-else حالت میں استعمال کیا جاتا ہے تاکہ 'unordered_map' کے اندر مخصوص کیز (67 اور 42) کو تلاش کیا جا سکے۔ اگر کلید مل جاتی ہے تو، 'عنصر پایا' پرنٹ کیا جاتا ہے. دوسری صورت میں، 'عنصر نہیں ملا' پرنٹ کیا جاتا ہے. مندرجہ ذیل آؤٹ پٹ دیکھیں:

یہ کوڈ نقشے میں مخصوص کلیدوں کی موجودگی یا غیر موجودگی کا تعین کرنے کے لیے 'unordered_map' اور find() فنکشن کے بنیادی استعمال کو ظاہر کرتا ہے۔

مثال 3:

آئیے ایک اور مثال کو دریافت کریں جو رن ٹائم پر ایک ان پٹ فراہم کرکے کسی قدر کی تلاش کو ظاہر کرتی ہے۔ یہ سادہ پروگرام ناموں (بطور کلید) اور متعلقہ عددی اقدار (اس صورت میں، کچھ صفات کی نمائندگی کرنے والے) کو ذخیرہ کرنے کے لیے ایک 'unordered_map' کا استعمال کرتا ہے۔ اس کے بعد یہ صارف کو ایک نام درج کرنے، find() فنکشن کا استعمال کرتے ہوئے نقشے میں اس نام کو تلاش کرنے، اور اگر نام مل جاتا ہے تو متعلقہ قدر پرنٹ کرنے کا اشارہ کرتا ہے۔ آپ کے حوالہ کے لیے کوڈ درج ذیل میں دیا گیا ہے۔

# شامل کریں

#include

#include

نام کی جگہ کا استعمال کرتے ہوئے std ;

int مرکزی ( ) {

std :: unordered_map < std :: تار ، دگنا > unomp = {

{ 'ہیری' ، 23 } ،

{ 'دوسرے' ، 7.4 } ،

{ 'کلثوم' ، 1.2 } } ;

تار کون ;

cout << 'اپ کسے تلاش کر رہے ہیں؟ ' ;

getline ( کھانا ، ڈبلیو ایچ او ) ;

unordered_map < تار ، دگنا >:: const_iterator fnd = unomp مل ( ڈبلیو ایچ او ) ;

اگر ( fnd == unomp اختتام ( ) )

cout << 'نہیں ملا' ;

اور

cout << endl << fnd -> پہلا << 'ہے' << fnd -> دوسرا << endl ;

واپسی 0 ;

}

آپ کی سمجھ کے لیے کوڈ کی خرابی درج ذیل ہے:

unordered_map < تار ، دگنا > unomp = { } ;

سٹرنگ کیز (نام) اور ڈبل ویلیوز کے ساتھ 'unomp' نام کا ایک 'غیر ترتیب شدہ_ نقشہ' بنایا گیا ہے۔

تار کون ;

صارف کو اسکرین پر نام درج کرنے کے لیے کہا جاتا ہے اور ان پٹ کو 'who' سٹرنگ متغیر میں محفوظ کیا جاتا ہے۔

unordered_map < تار ، دگنا >:: const_iterator fnd = unomp مل ( ڈبلیو ایچ او ) ;

find() فنکشن 'unordered_map' میں درج نام کو تلاش کرنے کے لیے استعمال کیا جاتا ہے۔ نتیجہ 'fnd' تکرار کرنے والے میں محفوظ ہے۔

اگر ( fnd == unomp اختتام ( ) )

cout << 'نہیں ملا' ;

اور

cout << endl << fnd -> پہلا << 'ہے' << fnd -> دوسرا << endl ;

اگر 'fnd' تکرار کنندہ 'unordered_map' (end()) کے آخر تک پہنچ جاتا ہے تو اس کا مطلب ہے کہ نام نہیں ملا اور 'نہیں ملا' پرنٹ کیا گیا ہے۔ بصورت دیگر، نام اور اس سے وابستہ قیمت چھپی ہوئی ہے۔ یہاں کوڈ کا آؤٹ پٹ ہے:

یہ کوڈ بنیادی طور پر 'unordered_map' کا استعمال کرتے ہوئے ایک سادہ نام تلاش کرنے والے ٹول کے طور پر کام کرتا ہے۔ یہ صارف کا ان پٹ لیتا ہے، نقشے میں نام تلاش کرتا ہے، اور اگر نام مل جاتا ہے تو متعلقہ قدر فراہم کرتا ہے۔

نتیجہ

C++ میں unordered_map::find() فنکشن 'unordered_map' کنٹینرز کے اندر موجود عناصر کو مؤثر طریقے سے تلاش کرنے کے لیے ایک طاقتور طریقہ کار فراہم کرتا ہے۔ اس کی مستقل اوسط وقت کی پیچیدگی اسے ایسے منظرناموں میں تلاش کی کارروائیوں کے لیے ایک ترجیحی انتخاب بناتی ہے جہاں کلیدی قدر کے جوڑوں تک تیزی سے رسائی حاصل کی جانی چاہیے۔ فراہم کردہ مثالیں اس کے عملی استعمال کو ظاہر کرتی ہیں، اس کی سادگی اور تاثیر پر زور دیتی ہیں۔ آخر میں، unordered_map::find() فنکشن میں مہارت حاصل کرنا C++ پروگرامر کی 'unordered_map' کنٹینرز کی مکمل صلاحیت کو بروئے کار لانے کی صلاحیت کو بڑھاتا ہے، جو آپٹمائزڈ اور اعلی کارکردگی والی ایپلی کیشنز کی تخلیق میں حصہ ڈالتا ہے۔