C++ Constexpr سٹرنگ کی مثالیں۔

C Constexpr S Rng Ky Mthaly



یہ مضمون Constexpr کے بارے میں بات کرے گا، جو C++ پروگرامنگ لینگویج میں ایک قابل ذکر اضافہ ہے جو C++ 11 میں متعارف کرایا گیا ہے اور C++ 14 میں مزید بڑھایا گیا ہے، اور کمپائلر کو اشارہ کرے گا کہ ایک متغیر، فنکشن، یا آبجیکٹ کنسٹرکٹر ایک کمپائل ہے۔ وقت مسلسل. اس نے ڈویلپرز کے مستقل بنانے اور جوڑ توڑ کرنے کے طریقے میں انقلاب برپا کردیا۔ Constexpr کے ذریعے، ڈویلپر ان تاثرات اور اقدار کی وضاحت کر سکتے ہیں جو رن ٹائم کے بجائے تالیف کے دوران ناقابل تغیر اور جانچے جاتے ہیں۔ کوڈ میں constexpr کو شامل کرنے کا سب سے بڑا فائدہ اس کی مستقل مزاجی کی ضمانت ہے۔

C++ Constexpr String کا استعمال کیا ہے؟

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

مثال 1: فیکٹریل کیلکولیشن کے لیے C++ میں Constexpr کا استعمال

اس مثال میں، ہم constexpr استعمال کریں گے جو کمپیوٹیشن کو رن ٹائم کے بجائے کمپائل ٹائم پر انجام دینے کی اجازت دیتا ہے۔ فیکٹوریلز کا حساب لگانے کے تناظر میں، ایک عام ریاضیاتی آپریشن، جو کہ constexpr ہے، کو تالیف کے دوران فیکٹریل اقدار کی گنتی کے لیے فائدہ اٹھایا جا سکتا ہے۔ آئیے درج ذیل کوڈ کا جائزہ لیں اور اس کا جائزہ لیں اور پھر کوڈ کی وضاحت دیکھیں:







# شامل کریں

constexpr int حقیقت پسندانہ ( int n ) {

واپسی n <= 1 ? 1 : ( n * حقیقت پسندانہ ( n - 1 ) ) ;

}

int مرکزی ( ) {

int ایک پر = 5 ;

std :: cout << 'فیکٹوریل آف' << ایک پر << '=' << حقیقت پسندانہ ( ایک پر ) << std :: endl ;

}

دی گئی کوڈ کی مثال تکراری انداز میں کسی نمبر کے فیکٹوریل کا حساب لگانے کے لیے constexpr کے استعمال کو ظاہر کرتی ہے۔ کمپائلر اس مثال میں کمپائل ٹائم پر فیکٹریل ایکسپریشن کا اندازہ کرنے کے قابل ہے کیونکہ فیکٹوریل فنکشن کا اعلان اور constexpr specifier کے ساتھ وضاحت کی گئی ہے۔ C++ پروگرام میں constexpr کا استعمال کرتے ہوئے، مرتب کرنے والا رن ٹائم کمپیوٹیشن کی ضرورت کو ختم کرتے ہوئے، کمپائل ٹائم پر 5 کے فیکٹوریل اظہار کا اندازہ کرتا ہے۔



اب، ہم مخصوص تفصیلات اور وضاحتوں کے ساتھ کوڈ کی تفصیلی خرابی دیکھتے ہیں۔



سب سے پہلے، ہم 'iostream' ہیڈر فائل کو شامل کرنے کے لیے #include کا استعمال کرتے ہیں جو کنسول میں پرنٹ کرنے کے لیے 'std::cout' جیسی ضروری ان پٹ اور آؤٹ پٹ فنکشنلٹی فراہم کرتی ہے۔





اس کے بعد، ہم factorial() فنکشن (دوبارہ) میں چلے جاتے ہیں جو کہ 'constexpr int factorial(int n)' ہے۔ یہ فیکٹوریل() فنکشن ایک تکراری فنکشن کی وضاحت کرتا ہے جو ایک 'n' انٹیجر کے فیکٹوریل کا حساب لگاتا ہے۔ Constexpr کا مطلب ہے کہ کارکردگی کی اصلاح کا نتیجہ تالیف کے دوران فنکشن کا جائزہ لینے سے ہوسکتا ہے۔

واپسی n <= 1؟ 1 : (n * فیکٹوریل(n – 1)) لائن تکرار کے لیے ایک مشروط اظہار استعمال کرتی ہے جو کہتی ہے کہ اگر 'n' 1 سے کم یا اس کے برابر ہے، تو یہ 1 (بیس کیس) لوٹاتا ہے۔ اگر نہیں، تو یہ فیکٹوریل کمپیوٹیشن (n! = n * (n-1)!) کرتا ہے، جو کہ فیکٹوریل کو کمپیوٹنگ کرنے کا عمومی فارمولا ہے، خود کو بار بار 'n – 1' کے ساتھ کال کرکے اور پھر نتیجہ کو 'n' سے ضرب دیتا ہے۔ ' یہ لکیریں فیکٹریل کیلکولیشن کے لیے دربان کی طرح کام کرتی ہیں۔ یہ چیک کرتا ہے کہ آیا نمبر بنیادی سطح پر ہے اور اگر ایسا ہے تو 1 لوٹاتا ہے۔ اگر نہیں، تو یہ فنکشن کالز کا ایک سلسلہ رد عمل شروع کرتا ہے، ہر ایک چھوٹے نمبروں پر کام کرتا ہے جب تک کہ بیس کیس تک نہ پہنچ جائے۔ پھر، نتائج کو الٹ ترتیب میں ایک ساتھ ضرب کیا جاتا ہے۔ آپ کے حوالہ کے لیے کوڈ کا آؤٹ پٹ درج ذیل ہے:



مثال 2: C++ Constexpr سٹرنگ کو ظاہر کرنے والے چھوٹے حروف کی گنتی

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

# شامل کریں
# شامل کریں
نام کی جگہ کا استعمال کرتے ہوئے std ;
constexpr سائز_ٹی گنتی لوئر کیس ( string_view s ) {
سائز_ٹی شمار = 0 ;
کے لیے ( چار c : s ) {
اگر ( نیچے ( c ) ) {
شمار ++;
}
}
واپسی شمار ;
}
int مرکزی ( ) {
cout << 'میں کل چھوٹے حروف' چھوٹے حروف ' ہیں = '
<< گنتی لوئر کیس ( 'چھوٹے حروف' ) << endl ;
}

یہاں ہر لائن کی وضاحت کے ساتھ کوڈ کی تفصیلی خرابی ہے:

#include پیغامات کو پرنٹ کرنے کے لیے معیاری ان پٹ/آؤٹ پٹ اسٹریم لائبریری کو استعمال کرنے کے لیے شامل کیا گیا ہے۔ #include میں مؤثر سٹرنگ ہیرا پھیری کے لیے 'string_view' کلاس شامل ہے۔

CountLowercase() فنکشن میں، 'constexpr size_t counterlower(string_view s)' فنکشن، دیئے گئے سٹرنگ ویو میں چھوٹے حروف کو شمار کرتا ہے۔ int main() پروگرام کا انٹری پوائنٹ ہے جو ایک پیغام کو پرنٹ کرتا ہے جو 'LoWeR CaSe LeTtErS' میں چھوٹے حروف کی تعداد کی نشاندہی کرتا ہے اور 'LoWeR CaSe LeTtErS' کے ساتھ CountLowercase() فنکشن کو بطور ان پٹ کال کرتا ہے اور نتیجہ پرنٹ کرتا ہے۔ پروگرام کے درج ذیل آؤٹ پٹ کا حوالہ دیں:

مثال 3: C++ Constexpr کو استعمال کرکے سرنی کا مظاہرہ

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

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

# شامل کریں
نام کی جگہ کا استعمال کرتے ہوئے std ;
int مرکزی ( ) {
constexpr int صف بندی [ 9 ] = { 5 ، 55 ، 555 ، 5555 ، 55555 } ;
constexpr int size_array = کا سائز صف بندی / کا سائز ( int ) ;
cout << 'سرنی کی لمبائی ہے =' << size_array << endl ;
cout << 'سرنی میں عناصر ہیں =' ;
کے لیے ( int میں = 0 ; میں < size_array ; ++ میں ) {
cout << صف بندی [ میں ] << '' ;
}
}

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

معیاری ان پٹ آؤٹ پٹ اسٹریم لائبریری کو شامل کرنے کے لیے، آؤٹ پٹ کے لیے 'cout' جیسے فنکشنز کے استعمال کی اجازت دیتے ہوئے، #include کہا جاتا ہے۔ پروگرام int main() فنکشن سے عمل درآمد شروع کرتا ہے۔ مین() فنکشن کے اندر، 'arrayint[]' array کی وضاحت کی گئی ہے، جس کا سائز 9 ہے جس میں constexpr int arrayint[9] اسٹیٹمنٹ ہے۔ صف کو پانچ نمبروں کے ساتھ شروع کیا گیا ہے، اور باقی عناصر واضح طور پر 0 رہے ہیں۔ int length_a = sizeof arrayint / sizeof(int); بائٹس میں 'اریینٹ' کے سائز کا حساب لگاتا ہے۔

ایک 'for' لوپ 'arrayint[]' array کے عناصر کے ذریعے دہرایا جاتا ہے، اور پھر اقدار کو کنسول پر پرنٹ کیا جاتا ہے۔ آئیے دیے گئے کوڈ کا درج ذیل آؤٹ پٹ دیکھتے ہیں:

نتیجہ

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