C++ جوڑوں کا ویکٹر

C Jw W Ka Wyk R



C++ میں، ایک ویکٹر ایک ورسٹائل کنٹینر ہے جو متحرک طور پر اپنا سائز تبدیل کر سکتا ہے جو عناصر کی موثر ہیرا پھیری کی اجازت دیتا ہے۔ جبکہ ایک جوڑا ایک سادہ کنٹینر ہے جو دو متضاد اشیاء کو رکھ سکتا ہے جو متعلقہ ڈیٹا کو منسلک کرنے اور ان کا نظم کرنے کا ایک آسان ذریعہ فراہم کرتا ہے۔ جب یہ جوڑے کسی ویکٹر کے اندر منظم ہوتے ہیں، تو ڈویلپرز کلیدی قدر کے جوڑوں کے متحرک مجموعہ یا دو الگ الگ عناصر کے کسی دوسرے مجموعہ کو تخلیق کرنے کی صلاحیت حاصل کرتے ہیں۔

یہ ڈیٹا ڈھانچہ خاص طور پر ایسے منظرناموں میں کارآمد ہے جہاں عناصر کو جوڑوں کے طور پر ذخیرہ کیا جانا چاہیے جیسے کہ کلیدی قدر کے جوڑوں سے نمٹنے یا اداروں کے درمیان تعلقات کی نمائندگی کرتے وقت۔ اس مضمون میں، ہم جوڑوں کے C++ ویکٹر کے تصور کو تلاش کریں گے اور اس کے عملی استعمال کو واضح کرنے کے لیے مختلف مثالیں تلاش کریں گے۔







مثال 1: بنیادی استعمال: جوڑوں کے ویکٹر پر تکرار کرنا

آئیے ایک بنیادی مثال پر غور کریں جہاں ہم جوڑوں کا ایک ویکٹر بناتے ہیں جو طلباء کے ناموں اور ان کی متعلقہ عمروں کی نمائندگی کرتے ہیں۔ جوڑوں کے ویکٹر پر تکرار کرنا ایک عام ویکٹر پر تکرار کرنے کے مترادف ہے۔ ویکٹر کے اندر ہر جوڑے کو بازیافت کرنے کے لیے کوئی یا تو تکرار کرنے والوں یا رینج پر مبنی 'for' لوپس کو ملازمت دے سکتا ہے۔



یہ مثال معنی خیز سیاق و سباق میں 'جوڑوں کے ویکٹر' کے نحو کو ظاہر کرتی ہے۔



# شامل کریں
#شامل <ویکٹر>
#include

اہم int ( ) {

std :: ویکٹر < std::جوڑی < std::string، int >> طالب علم کا ڈیٹا؛

studentData.push_back ( std::make_pair ( 'آدم' ، بیس ) ) ;
studentData.push_back ( std::make_pair ( 'بل' ، 22 ) ) ;
studentData.push_back ( std::make_pair ( 'چارلی' ، اکیس ) ) ;

std::cout << 'طالب علم کا ڈیٹا: \n ' ;
کے لیے ( const آٹو اور طالب علم: طالب علم ڈیٹا ) {
std::cout << 'نام:' << طالب علم۔پہلا << '، عمر:' << طالب علم سیکنڈ << std::endl;
}

واپسی 0 ;
}


اس C++ کوڈ کے ٹکڑوں میں، ہم تین ضروری ہیڈر فائلوں کو شامل کرکے شروع کرتے ہیں: ان پٹ اور آؤٹ پٹ آپریشنز کے لیے ' '، '' ویکٹر کنٹینر کو استعمال کرنے کے لیے، اور '' تک رسائی کے لیے 'std:: جوڑی' ٹیمپلیٹ۔ یہ ہیڈر ہمیں ان افعال کو استعمال کرنے کے قابل بناتے ہیں جو ہمارے پروگرام کے لیے ضروری ہیں۔





آگے بڑھتے ہوئے، مین() فنکشن کے اندر، ہم 'std::vector' کنٹینر کا استعمال کرتے ہوئے 'studentData' نامی ویکٹر کا اعلان کرتے ہیں۔ یہ ویکٹر ان جوڑوں کو ذخیرہ کرنے کے لیے ڈیزائن کیا گیا ہے جہاں ہر جوڑا ایک طالب علم کے نام (ایک 'std::string' کے طور پر پیش کیا جاتا ہے) اور ان کی عمر (ایک 'int' عدد) کو سمیٹتا ہے۔ پھر، ہم 'طالب علم ڈیٹا' ویکٹر کو تین جوڑوں کے ساتھ آباد کرتے ہیں۔ 'push_back' فنکشن کا استعمال کرتے ہوئے، جوڑوں کو ویکٹر کے آخر میں جوڑا جاتا ہے، متحرک طور پر اس کے سائز کو ایڈجسٹ کرتے ہیں۔ پھر ایک لوپ ہر طالب علم کے نام اور عمر کو نکال کر پرنٹ کرتے ہوئے 'طالب علم کے ڈیٹا' کے ذریعے دہراتا ہے۔ آؤٹ پٹ 'طلبہ کا ڈیٹا:' دکھاتا ہے جو ساختی نمائندگی پر زور دیتا ہے۔ طلباء کے نام اور عمریں الگ سے پرنٹ کی جاتی ہیں، ذخیرہ شدہ ڈیٹا کو واضح طور پر پیش کرتے ہیں۔



مثال 2: جوڑوں کے ویکٹر کو ترتیب دینا

جوڑوں کے ویکٹر کو چھانٹنا ایک عام عمل ہے، خاص طور پر جب کلیدی قدر ایسوسی ایشنز سے نمٹتے ہیں۔ اس مقصد کے لیے ' ' ہیڈر سے 'std::sort' فنکشن استعمال کیا جا سکتا ہے۔ آئیے دیکھتے ہیں کہ پہلے اور دوسرے عناصر کی بنیاد پر جوڑوں کے ویکٹر کو کیسے ترتیب دیا جائے:

# شامل کریں
#شامل <ویکٹر>
#include

اہم int ( ) {

std :: ویکٹر < std::جوڑی < std::string، int >> معلومات

info.push_back ( std::make_pair ( 'پیٹر' ، پندرہ ) ) ;
info.push_back ( std::make_pair ( 'ڈورا' ، 29 ) ) ;
info.push_back ( std::make_pair ( 'حنا' ، بیس ) ) ;

std::cout << 'اصل معلومات: \n ' ;
کے لیے ( const آٹو اور اندراج: معلومات ) {
std::cout << 'نام:' << entry.first << '، عمر:' << entry.second << std::endl;
}


std :: ترتیب دیں۔ ( info.begin ( ) , info.end ( ) ) ;

std::cout << ' \n ترتیب شدہ معلومات: \n ' ;
کے لیے ( const آٹو اور اندراج: معلومات ) {
std::cout << 'عمر:' << entry.second << '، نام:' << entry.first << std::endl;
}

واپسی 0 ;
}


اس C++ کوڈ کی مثال میں، ہم افراد، خاص طور پر ان کے ناموں اور عمروں سے متعلق ڈیٹا کو ذخیرہ کرنے اور اس میں ہیرا پھیری کرنے کے لیے جوڑوں کے ویکٹر کے ساتھ کام کر رہے ہیں۔ ہم مین () فنکشن کے اندر 'جوڑوں کی معلومات' کے نام سے ایک ویکٹر شروع کرتے ہیں۔ اس کے بعد، ہم اس ویکٹر کو تین جوڑوں کے ساتھ آباد کرتے ہیں، جن میں سے ہر ایک میں ایک مخصوص شخص کا نام اور عمر ہوتی ہے، موثر جوڑی بنانے کے لیے 'push_back' فنکشن اور 'std::make_pair' کا استعمال کرتے ہوئے

ہم کنسول میں 'اصل معلومات' کو آؤٹ پٹ کرتے ہیں۔ اس میں 'معلومات' ویکٹر کے ذریعے تکرار کرنا اور ہر جوڑے کے اجزاء کو پرنٹ کرنا شامل ہے۔ پھر، ہم جوڑوں کے لیے پہلے سے طے شدہ موازنہ آپریٹر کی بنیاد پر 'معلومات' ویکٹر کو دوبارہ ترتیب دینے کے لیے 'std::sort' الگورتھم کا استعمال کرتے ہیں جو ہر جوڑے کے پہلے عنصر کا موازنہ کرتا ہے (اس صورت میں، نام)۔ چھانٹنے کے عمل کے بعد، ہم چھانٹی ہوئی معلومات کو پرنٹ کرکے ترمیم شدہ 'معلومات' ویکٹر کے ذریعے دوبارہ دہراتے ہیں۔ اس بار، آؤٹ پٹ عمر کی پہلی ترتیب پر زور دیتا ہے، چھانٹنے کے عمل کے نتیجے کی وضاحت کرتا ہے۔

مثال 3: مختلف اقسام کے ویکٹرز کو ملانا

آپ کو کچھ ایسے حالات کا سامنا کرنا پڑ سکتا ہے جہاں آپ کو دو ویکٹرز کی معلومات کو یکجا کرنا ہوگا۔ جوڑوں کا ایک ویکٹر دو ویکٹروں کے عناصر کے درمیان تعلق کو برقرار رکھنے میں مدد کرسکتا ہے۔

# شامل کریں
#شامل <ویکٹر>

اہم int ( ) {
std :: ویکٹر < std::string > شہر = { 'نیویارک' ، 'پیرس' ، 'ٹوکیو' } ;
std :: ویکٹر < int > آبادی = { 8175133 ، 2140526 ، 37435191 } ;

std :: ویکٹر < std::جوڑی < std::string، int >> شہر کی آبادی کے جوڑے؛

کے لیے ( size_t i = 0 ; میں < std::min ( شہروں کا سائز ( ) آبادی کا سائز ( ) ) ; ++i ) {
cityPopulationPairs.push_back ( { شہر [ میں ] ، آبادی [ میں ] } ) ;
}

std::cout << 'شہر-آبادی کے جوڑے:' << std::endl;
کے لیے ( const آٹو اور pair : city Population Pairs ) {
std::cout << 'شہر:' << جوڑا۔پہلا << '، آبادی: ' << pair.second << std::endl;
}

واپسی 0 ;
}


کوڈ کے 'مین' فنکشن میں، دو ویکٹر کا اعلان کیا گیا ہے: 'شہروں' کو شہر کے ناموں کو ذخیرہ کرنے کے لیے اور 'آبادی' کو متعلقہ آبادی کی قدروں کو ذخیرہ کرنے کے لیے۔

ایک تیسرا ویکٹر، 'city Population Pairs'، شہروں کے جوڑوں اور ان کی متعلقہ آبادیوں کو ذخیرہ کرنے کے لیے بیان کیا گیا ہے۔ ہر جوڑا 'std::pair' ہے جہاں 'std::string' شہر کے نام کی نمائندگی کرتا ہے اور 'int' آبادی کی نمائندگی کرتا ہے۔ اس کے بعد ہم 'std::min' کا استعمال کرتے ہوئے ویکٹرز (شہروں اور آبادیوں) پر لوپ کی تکرار کا استعمال کرتے ہیں تاکہ یہ یقینی بنایا جا سکے کہ لوپ دو ویکٹر سائز میں سے چھوٹے سے آگے کے عناصر تک رسائی حاصل نہیں کرتا ہے۔ لوپ کے اندر، شہر کی آبادی کی معلومات کے جوڑے بنائے جاتے ہیں اور 'cityPopulationPairs' ویکٹر میں شامل کیے جاتے ہیں۔

معلومات کو یکجا کرنے کے بعد، ایک اور 'for' لوپ کا استعمال ان جوڑوں کے ذریعے دوبارہ کرنے کے لیے کیا جاتا ہے جو 'cityPopulationPairs' میں محفوظ ہیں۔ اس کے بعد مشترکہ ڈیٹا کو معیاری آؤٹ پٹ پر 'std::cout' کا استعمال کرتے ہوئے ظاہر کیا جاتا ہے، جو واضح طور پر ہر شہر اور اس کی متعلقہ آبادی کی نمائندگی کرتا ہے۔

مثال 4: زیادہ سے زیادہ اور کم از کم قدریں تلاش کرنا

ڈیٹاسیٹ کے اندر کم از کم اور زیادہ سے زیادہ اقدار کی شناخت الگورتھم اور شماریاتی کارروائیوں میں ایک عام ضرورت ہے۔ ہم ایک ترتیب میں زیادہ سے زیادہ اور کم از کم دونوں قدروں کو ٹریک کرنے کے لیے جوڑوں کے ویکٹر کا استعمال کر سکتے ہیں:

# شامل کریں
#شامل <ویکٹر>
#include

اہم int ( ) {
std :: ویکٹر < int > نمبرز = { 5 ، 12 ، 18 ، 3 ، 7 ، 4 ، 33 } ;

std :: ویکٹر < std::جوڑی < تم، تم >> minMaxPairs؛

std :: ترتیب دیں۔ ( نمبرز شروع کریں۔ ( ) , numbers.end ( ) ) ;

minMaxPairs.push_back ( { نمبر سامنے ( ) , numbers.back ( ) } ) ;

std::cout << 'کم سے زیادہ جوڑے:' << std::endl;
کے لیے ( const آٹو اور جوڑا: minMaxPairs ) {
std::cout << 'منٹ:' << جوڑا۔پہلا << '، زیادہ سے زیادہ:' << pair.second << std::endl;
}

واپسی 0 ;
}


فراہم کردہ C++ کوڈ انٹیجرز کے ویکٹر میں کم سے کم اور زیادہ سے زیادہ قدروں کو تلاش کرنے اور پھر ان اقدار کو جوڑوں کے ویکٹر میں ذخیرہ کرنے کے عمل کو ظاہر کرتا ہے۔ 'نمبرز' نامی ایک ویکٹر کا ابتدائی طور پر اعلان کیا جاتا ہے اور انٹیجرز کے سیٹ کے ساتھ شروع کیا جاتا ہے۔ ڈیٹاسیٹ میں کم از کم اور زیادہ سے زیادہ قدروں کی مؤثر طریقے سے شناخت کرنے کے لیے، پروگرام الگورتھم لائبریری سے 'std::sort' فنکشن کا استعمال کرتا ہے۔

اس فنکشن کا مقصد عناصر کو صعودی ترتیب میں ترتیب دینا ہے، ڈیٹاسیٹ میں کم از کم اور زیادہ سے زیادہ دونوں قدروں کی شناخت کے عمل کو آسان بنانا ہے۔ چھانٹنے کا عمل 'نمبرز' ویکٹر پر نمبروں.begin() اور numbers.end() کو رینج کے پیرامیٹرز کے طور پر استعمال کرتے ہوئے لاگو ہوتا ہے۔ چھانٹنے کے مرحلے کے بعد، پروگرام جوڑوں کا ایک ویکٹر بناتا ہے، 'minMaxPairs'، حساب کی گئی کم از کم اور زیادہ سے زیادہ قدروں کو ذخیرہ کرنے کے لیے۔ 'push_back' فنکشن کو پھر ایک جوڑا شامل کرنے کے لیے استعمال کیا جاتا ہے جس میں ترتیب شدہ نمبر ویکٹر کے پہلے (کم سے کم) اور آخری (زیادہ سے زیادہ) عناصر ہوتے ہیں۔ آخر میں، پروگرام 'minMaxPairs' ویکٹر کے ذریعے تکرار کرکے اور کم سے کم اور زیادہ سے زیادہ اقدار کو ظاہر کرکے نتیجہ نکالتا ہے۔

نتیجہ

آخر میں، جوڑوں کا C++ ویکٹر ایک طاقتور اور لچکدار ڈیٹا ڈھانچے کے طور پر ابھرتا ہے، جس سے پروگرامنگ کے کاموں میں استعداد کی ایک تہہ شامل ہوتی ہے۔ اس کی نحوی اور عملی ایپلی کیشنز کی تفصیلی کھوج کے ذریعے، ہم نے دیکھا ہے کہ یہ کنٹینر کس طرح کلیدی قدر کی انجمنوں کو منظم کرنے، مختلف ویکٹرز سے معلومات کو یکجا کرنے، اور کم سے کم اور زیادہ سے زیادہ اقدار کو ٹریک کرنے میں مدد کرتا ہے۔