C++ Std سویپ

C Std Swyp



'سواپنگ دو یا زیادہ چیزوں کے تبادلے کا عمل ہے۔ پروگرامنگ میں دو متغیرات کے درمیان ڈیٹا کو تبدیل کیا جا سکتا ہے۔ دو افراد کے درمیان چیزوں کا تبادلہ حقیقی زندگی میں ممکن ہے۔ C++ میں معیاری لائبریری فنکشن swap() کا استعمال کرتے ہوئے کسی بھی دو آبجیکٹ کی قدروں کو تبدیل کیا جا سکتا ہے۔ اسے C11 میں 'utility' ہیڈر کے نیچے رکھا گیا ہے۔ C++ میں swap() فنکشن میں صفوں کے لیے N کی پیچیدگی ہے کیونکہ ہر عنصر کو انفرادی طور پر تبدیل کیا جانا چاہیے، جب کہ مستقل کے لیے فنکشن کی مشکل مستقل ہے۔ swap() فنکشن ایک انتباہ یا غلطی پھینکتا ہے اگر متغیر عناصر میں سے کوئی ناکام ہوجاتا ہے۔ ذیل میں std::swap() کے لیے فنکشن کے دستخط دیکھیں:

نحو:

سانچے < کلاس ٹی > باطل تبادلہ ( ٹی اور متغیر_1 ، ٹی اور متغیر_2 ) ;

پہلے متغیر کی قدر اور دوسرے متغیر، دونوں کی قدریں، جو کہ اسٹور ویلیوز ہیں، کو تبدیل کیا جانا ہے۔ فنکشن صرف متغیرات کی قدروں کو تبدیل کرتا ہے۔ اس کی کوئی پیداوار نہیں ہے۔'







C++ میں swap() فنکشن کا کام کرنا

سویپ فنکشن C++ میں درج ذیل تین لائنوں کا استعمال کرتے ہوئے لاگو کیا جاتا ہے۔



سانچے باطل تبادلہ ( ٹی اور میں ، ٹی اور جے ) {
ٹی درجہ حرارت = std :: اقدام ( میں ) ;
میں = std :: اقدام ( جے ) ;
جے = std :: اقدام ( درجہ حرارت ) ;
}

بیان 'T temp = std::move(i)'؛ عنصر 'i' کی ایک کاپی بناتا ہے اور اسے نقل کرتا ہے۔ یہاں، 'i = std::move(j)'؛ 'i' کے اصل آئٹمز کو رد کر دیتا ہے اور اصل 'j' کی جگہ 'j' کی 'i' کاپی اسٹور کرتا ہے۔ فارمولا 'j = std:: move(temp)'؛ 'i' کو temp کے کلون کے ساتھ محفوظ کریں، اور temp کے ایک جیسے مواد کو ہٹا دیں۔ نیز، swap() فنکشن کے مکمل ہونے کے بعد temp متغیر کو حذف کریں۔



مثال 1: پروگرام کا استعمال کرتے ہوئے std::move Method کو تبدیل کرنا

جیسا کہ ذیل میں دکھایا گیا ہے، ہم C++11 خصوصیت std::move کا استعمال کرتے ہوئے دو اشیاء کو تبدیل کر سکتے ہیں۔





# شامل کریں

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



سانچے
باطل تبادلہ ( ٹی اور a ، ٹی اور ب )
{
ٹی درجہ حرارت = std :: اقدام ( a ) ;
a = std :: اقدام ( ب ) ;
ب = std :: اقدام ( درجہ حرارت ) ;
}
int مرکزی ( )
{
std :: ویکٹر فہرست = { 10 ، 12 ، 13 ، پندرہ ، 16 ، 17 } ;
int میں = 3 ، جے = 5 ;
تبادلہ ( فہرست [ میں ] ، فہرست [ جے ] ) ;
کے لیے ( int میں : فہرست ) {
std :: cout << میں << '' ;
}
واپسی 0 ; }

ہمارے پاس ایک ٹیمپلیٹ ڈیکلریشن ہے جس میں ایک آبجیکٹ 'T' ہے۔ اس کے بعد، ہم نے فنکشن کو 'swap' کے طور پر قائم کیا ہے۔ فنکشن 'T' کی قسم کے دو پیرامیٹرز &a اور &b لیتا ہے۔ T&a، T&b کے پاس شدہ متغیر کے ایڈریس کا حوالہ دینے یا اسے ذخیرہ کرنے اور واپس کیے بغیر براہ راست ان پر لاگو کرنے کے دلائل کے نتیجے میں، swap(T&a, T&b) فنکشن کو کال بذریعہ حوالہ کہا جاتا ہے۔



void سویپ کے اندر، ہم نے std::move طریقہ استعمال کرتے ہوئے سویپنگ کا الگورتھم لاگو کیا ہے۔ پھر، ہم نے پروگرام مین کی تعمیر کی۔ یہاں، ہم نے متغیر 'فہرست' کا اعلان کیا ہے اور اسے عددی اقدار کی فہرست کے ساتھ شروع کیا ہے۔ ہم نے تبادلہ کے لیے 'i' اور 'j' کے لیے قدریں مقرر کی ہیں۔ دوسرے انڈیکس پر موجود عددی قدر کو پانچویں انڈیکس میں عددی قدر سے بدل دیا گیا۔ اس کے بعد، ہم نے سویپ فنکشن کو کال کیا اور 'i' اور 'j' انڈیکس کو تبدیل کرنے کے لیے اس میں پاس کیا۔ بدلی ہوئی فہرست کو پرنٹ کرنے کے لیے لوپ کا استعمال کیا جاتا ہے۔

آؤٹ پٹ نے ترمیم شدہ فہرست ظاہر کی۔ آپ مخصوص اشاریہ جات کے مطابق قدر کو تبدیل کرکے تیار کردہ نئی فہرست کا مشاہدہ کر سکتے ہیں۔

مثال 2: پروگرام کا استعمال کرتے ہوئے std::swap طریقہ تبدیل کرنا

یوٹیلیٹی ہیڈر (C++11 میں) میں پائے جانے والے std::swap میکانزم کو استعمال کرنا معمول کی بات ہے۔ اسے کام کرنے کے لیے دو اشیاء کی قدروں کو تبدیل کیا جاتا ہے۔

# شامل کریں

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

#include



int مرکزی ( )
{
std :: vectorarr = { 3 ، 6 ، 9 ، پندرہ ، 13 } ;
int میں = 3 ، جے = 4 ;

std :: تبادلہ ( arr [ میں ] ، arr [ جے ] ) ;

کے لیے ( int میں : arr ) {
std :: cout << میں << '' ;
}

واپسی 0 ;
}

ہیڈر فائل کو درآمد کرکے، ہم اپنے پروگرام میں سویپ فنکشن تک رسائی حاصل کرسکتے ہیں۔ یہاں، ہم نے ہیڈر فائل کو دو اور اہم لائبریریوں کے ساتھ شامل کیا ہے۔ پھر، ہم نے int مین طریقہ قائم کیا ہے۔ پروگرام کے مین کے اندر، ہم نے 'arr' متغیر بنا کر ویکٹر کا اعلان کیا ہے۔ متغیر 'arr' کو انٹیجر کے پانچ عناصر کے ساتھ شروع کیا گیا ہے۔ انڈیکس پوزیشنز کو تبدیل کرنے کے لیے 'i' اور 'j' کو تفویض کیا گیا ہے۔ متغیرات 'i' اور 'j' کو پھر مخصوص انڈیکس کی قدر کے بدلے کے لیے std::swap طریقہ میں منتقل کیا جاتا ہے۔ فار لوپ کے ساتھ، ہم نے تبدیل شدہ صفوں کو پرنٹ کیا ہے۔

std::swap طریقہ استعمال کرکے سویپنگ آپریشن کے بعد حاصل کی گئی فہرست اس طرح ظاہر ہوتی ہے:

مثال 3: پروگرام کا استعمال کرتے ہوئے std::iter_swap طریقہ تبدیل کرنا

std::iter_swap الگورتھم کا استعمال، جو الگورتھم کے ہیڈر میں درج ہے، ایک اضافی آپشن ہے۔ اس کے کام کرنے کا طریقہ ان اشیاء کی اقدار کو تبدیل کرنا ہے جن کی طرف فراہم کردہ تکرار کرنے والے اشارہ کرتے ہیں۔

# شامل کریں

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

#include

#include



int مرکزی ( )
{
std :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
int میں = 0 , جے = 4 ;
آٹو itr1 = std :: اگلے ( ایک چیز. شروع ( ) , میں ) ;
آٹو itr2 = std :: اگلے ( ایک چیز. شروع ( ) , جے ) ;

std :: iter_swap ( itr1 , itr2 ) ;
کے لیے ( int میں : ایک چیز ) {
std :: cout << میں << '' ;
}
واپسی 0 ;
}

پروگرام کے مرکزی طریقہ کے مطابق، ہم نے ایک ویکٹر متغیر 'vec' کا اعلان کیا ہے اور اسے نمبروں کی ایک ویکٹر فہرست تفویض کی ہے۔ پھر، ہم نے انڈیکس پوزیشن کو متغیر 'i' اور 'j' کے لیے متعین کیا۔ std::iter_swap طریقہ استعمال کیا جاتا ہے جو iter1 اور iter2 کو بطور دلیل لیتا ہے۔ iter1 اور iter2 کا اعلان آٹو کی ورڈ کے ساتھ کیا جاتا ہے اور ان میں تکرار آپریشن ہوتا ہے۔ لوپ کا طریقہ عمل درآمد کے بعد ویکٹر سرنی کی تبدیل شدہ اقدار کو پرنٹ کرتا ہے۔

std::iter_swap طریقہ نے مخصوص ویکٹرز کی قدروں کو کامیابی کے ساتھ تبدیل کیا۔

مثال 4: تبدیل کرنے کے لیے عارضی متغیرات کے بغیر استعمال کرنے کا پروگرام

یہ مثال عارضی متغیرات کے استعمال کے بغیر C++ کوڈ میں نمبروں کو تبدیل کرنے کا ایک نیا طریقہ دکھاتی ہے۔

# شامل کریں

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

int مرکزی ( )
{
int x1 = دو , x2 = 12 ;
cout << 'تبادلہ کرنے سے پہلے۔' << endl ;
cout << 'x1 =' << x1 << 'x2 =' << x2 << endl ;

x1 = x1 + x2 ;
x2 = x1 - x2 ;
x1 = x1 * x2 ;

cout << ' \n تبادلہ کرنے کے بعد۔' << endl ;
cout << 'x1 =' << x1 << 'x2 =' << x2 << endl ;

واپسی 0 ; }

آئیے اس پروگرام کے آپریشن کا جائزہ لیں۔ یہاں، ہم نے x1 اور x2 کا اعلان کیا ہے، جو بالترتیب نمبر کے ساتھ ترتیب دیے گئے ہیں۔ پھر، فارمولہ x1 = x1+ x2 کا استعمال کرتے ہوئے، ہم x1 اور x2 شامل کرتے ہیں اور نتیجہ x1 میں ڈالتے ہیں۔ اس سے ظاہر ہوتا ہے کہ x1 2 جمع 12 کے برابر ہے۔ لہذا، اب 14 کے برابر ہے۔ پھر، ہم فارمولہ x2 = x1 – x2 کا اطلاق کرتے ہیں۔ اس سے ظاہر ہوتا ہے کہ x2 = 14 – 12۔ لہذا، x2 اب 2 کے برابر ہے۔ ایک بار پھر، ہم فارمولہ x1 = x1 – x2 کا اطلاق کرتے ہیں۔ اس سے ظاہر ہوتا ہے کہ x1 = 14 – 2۔ لہذا، آخر میں x1 = 12۔ نتیجے کے طور پر، نمبروں کو تبدیل کر دیا گیا ہے.

پہلے اور بعد میں تبدیل شدہ نمبر درج ذیل پرامپٹ اسکرین پر ظاہر ہوتا ہے۔

نتیجہ

یہاں، ہم C++ میں swap() کی مکمل تفصیل، اس کے استعمال، اور کچھ مثالیں دیکھتے ہیں جو یہ بتاتے ہیں کہ یہ کیسے کام کرتا ہے۔ std:: swap() فنکشن کا استعمال کرتے ہوئے، دو متغیرات کی قدروں کو تبدیل کیا جا سکتا ہے۔ C++ STL میں ایک بلٹ ان فنکشن شامل ہے جسے std::swap() کہتے ہیں۔ swap(T&variable 1, T&variable 2) فنکشن حوالہ کے لحاظ سے کال کرتا ہے، اور ڈیٹا متغیر کی قسم پر منحصر C++ اوورلوڈز سویپ() کی بھی اس ٹیوٹوریل میں وضاحت کی گئی ہے۔