فنکشن C ++ سے صف واپس کریں۔

Return Array From Function C

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

جامد صف واپس کرنے کے لیے پوائنٹر استعمال کریں۔

جب ہم ایک عام صف استعمال کرتے ہیں تو ، کسی قسم کے غیر معمولی نتائج کے امکانات ہوتے ہیں۔ اس سے بچنے کے لیے ، ہم اپنے C ++ کوڈ میں ایک جامد صف استعمال کرتے ہیں۔ آئیے اس مثال کو سمجھیں جو ہم نے استعمال کی ہے۔ اس فنکشن میں ، ہم نے 5 اقدار کے ساتھ ایک صف کا اعلان کیا ہے جیسا کہ یہاں ذکر کیا گیا ہے۔



انٹ *فنکشن ()



چونکہ ویلیو ایک انٹیجر ٹائپ ہوگی ، لہذا اسے نیچے مثال کے طور پر انٹ کے بطور ٹیگ کیا گیا ہے۔ جیسا کہ ہم نے فنکشن کو بطور پوائنٹر متعارف کرایا ہے ، فنکشن ایک پوائنٹر ٹائپ ہوگا۔ اقدار میں داخل ہونے کے بعد ، ایک صف کو مرکزی پروگرام میں واپس کردیا جاتا ہے۔



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

انٹ*اشارہ=فنکشن()؛

پوائنٹر کا مقصد اس آئٹم کا پتہ لگانا ہے جو ایک صف میں انڈیکس پر موجود ہے۔ دوسرے الفاظ میں ، یہ صف میں قیمت کا پتہ دکھاتا ہے۔ پھر ، ہم ایک فنکشن پروٹوٹائپ استعمال کرتے ہیں جو پوائنٹر کو لوٹائے گا۔



فنکشن کے ذریعے واپس آنے والی صف کی پیداوار کو دیکھنے کے لیے ، ہمیں لینکس کے معاملے میں اوبنٹو ٹرمینل تک رسائی حاصل کرنے کی ضرورت ہے۔ یہ لینکس ٹرمینل کے ذریعے قابل رسائی آؤٹ پٹ کی وجہ سے ہے۔ لینکس میں ، ہمیں کسی بھی ٹیکسٹ ایڈیٹر میں لکھے گئے C ++ کوڈز کو چلانے کے لیے ایک کمپائلر کی ضرورت ہوتی ہے۔ یہ تالیف G ++ کے ذریعے کی گئی ہے۔ -o آؤٹ پٹ کو فائل میں محفوظ کرنے کے لیے استعمال کیا جاتا ہے۔ یہاں ، ہمیں آؤٹ پٹ فائل اور سورس کوڈ فائل کی ضرورت ہے۔ تالیف کے بعد ، ہم کوڈ پر عمل کریں گے:

$جی ++ یاfile1 file1.c
$./فائل 1

آؤٹ پٹ سے ، ہم دیکھ سکتے ہیں کہ سرنی ، جو فنکشن میں شروع کی گئی تھی ، ایک مستحکم سرنی کا استعمال کرتے ہوئے مین فنکشن میں ظاہر ہوتا ہے ، دستی طور پر اور پوائنٹرز کے ذریعے شروع کیا جاتا ہے۔

پوائنٹرز کا استعمال کرتے ہوئے متحرک طور پر مختص کردہ صف واپس کریں۔

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

ہم یہاں استعمال کی گئی مثال کی طرف بڑھ رہے ہیں۔ ہم نے پچھلی مثالوں کی طرح پوائنٹرز کے ساتھ ایک متحرک صف استعمال کی ہے ، جہاں ہم نے جامد صفوں کے ساتھ اشارے استعمال کیے ہیں۔

انٹ*فنکشن()

فنکشن کے اعلان کے بعد ، صفوں کو متحرک طور پر اعلان کیا جاتا ہے:

انٹ*صف= نئی int [100۔]؛

اصطلاح ، نئی ، مسلسل متحرک صف بنانے کے لیے استعمال ہوتی ہے۔ ہم اس میں اقدار درج کرکے صف پر آپریشن کریں گے۔ اس کے بعد ، صف کو مرکزی پروگرام میں واپس کردیا جاتا ہے:

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

انٹ*اشارہ=فنکشن()؛

وہ اقدار جو صف میں محفوظ کی گئی تھیں دستی طور پر چھاپی جاتی ہیں۔ پیداوار تالیف اور عملدرآمد کے طریقہ کار کے ذریعے حاصل کی جاتی ہے۔

ڈھانچے کا استعمال کرتے ہوئے صف واپس کریں۔

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

ساخت کا نمونہ۔
{
انٹ ار۔[100۔]؛
}؛

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

ساخت نمونہ فنک۔(intn)

اب ، مرکزی پروگرام کی طرف بڑھتے ہوئے ، ہم نے اس کے ذریعے صف تک رسائی کے لیے ایک آبجیکٹ بنایا ہے:

ساخت کا نمونہ x۔؛

آبجیکٹ کی ابتداء کے بعد ، متغیر میں ایک قدر شامل کی جاتی ہے جس تک ہم چاہتے ہیں کہ نمبروں کو صف میں داخل کیا جائے۔ فنکشن کال میں ، ہم پیرامیٹر میں ویلیو پاس کریں گے:

ایکس=فنکشن(n)؛

ہمارے پاس لوپ کا استعمال کرکے ڈسپلے ہوگا۔ اقدار مرکزی پروگرام کے آغاز میں اعلان کردہ شے کے ذریعے دکھائے جاتے ہیں:

آؤٹ پٹ ظاہر کرتا ہے کہ نتائج میں 6 اقدار دکھائی گئی ہیں کیونکہ ہم نے پروگرام میں 6 نمبر داخل کیے ہیں۔

Std کا استعمال کرتے ہوئے صف واپس کریں۔

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

#شامل کریں

صف<int،10۔>فنکشن()

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

آمد=فنکشن()؛

ایک بار پھر ، لوپ کے لیے صف کی اقدار کو ظاہر کرنے کے لیے استعمال کیا جائے گا۔ ہم ذیل میں دکھائی گئی تصویر سے آؤٹ پٹ کا مشاہدہ کرتے ہیں۔ جیسا کہ ہم نے 10 سائز استعمال کیے ہیں ، 0 نمبر درج کیے جائیں گے۔ لہذا ، یہ دکھائے جاتے ہیں:

ویکٹر کنٹینر کے ذریعے صف واپس کریں۔

یہ نقطہ نظر متحرک طور پر مختص صف ہے۔ جیسا کہ اس معاملے میں ، صف کے سائز کی وضاحت کرنے کی ضرورت نہیں ہے۔ ہمیں یہاں کسی سائز کے پیرامیٹر کی ضرورت نہیں ہے۔ اس مثال کا استعمال کرتے ہوئے ، ہمیں لائبریری میں ایک ویکٹر ہیڈر شامل کرنے کی ضرورت ہے جس میں ویکٹر کی فعالیتیں ہوں۔

فنکشن کی طرف بڑھتے ہوئے ، جہاں ریٹرن ٹائپ ایک انٹ ویکٹر بھی ہے اور پیرامیٹر میں بطور دلیل ویکٹر پوائنٹر بھی ہوتا ہے۔ ٹمپ نام کے ساتھ ایک صف یہاں متعارف کرائی گئی ہے:

ویکٹر<int>ضرب ارے بائی ٹو۔(constویکٹر<int> *آمد)

فنکشن tmp.push_back () فنکشن کے استعمال سے صف کے عناصر کو دو سے ضرب دے گا۔ پھر ، tmp واپس کریں۔ ایک آٹو ٹائپ متغیر فنکشن سے صف کی اقدار کو قبول کرے گا۔ صف اس میں موجود اشیاء پر مشتمل ہے۔

آؤٹ پٹ ویکٹر کنٹینر کا کام دکھاتا ہے۔

نتیجہ

مذکورہ بالا آرٹیکل میں ، ہم نے فنکشن سے صف کو واپس لانے کی فعالیت کی وضاحت کے لیے پانچ عام طور پر استعمال ہونے والے طریقے بیان کیے ہیں۔