C++ Constexpr স্ট্রিং উদাহরণ

C Constexpr Strim Udaharana



এই নিবন্ধটি কনস্টেক্সপ্র সম্পর্কে আলোচনা করবে, C++ প্রোগ্রামিং ভাষার একটি উল্লেখযোগ্য সংযোজন যা C++11-এ চালু করা হয়েছে এবং C++14-এ আরও উন্নত করা হয়েছে এবং কম্পাইলারকে সংকেত দেবে যে একটি পরিবর্তনশীল, ফাংশন বা অবজেক্ট কনস্ট্রাক্টর একটি কম্পাইল- সময় ধ্রুবক এটি বিকাশকারীরা ধ্রুবকগুলি তৈরি এবং ম্যানিপুলেট করার পদ্ধতিতে বিপ্লব ঘটিয়েছে। কনস্টেক্সপ্রের মাধ্যমে, বিকাশকারীরা এক্সপ্রেশন এবং মানগুলিকে সংজ্ঞায়িত করতে পারে যা রানটাইমের পরিবর্তে সংকলনের সময় অপরিবর্তনীয় এবং মূল্যায়ন করা হয়। কোডে constexpr অন্তর্ভুক্ত করার ব্যাপক সুবিধা হল এর স্থিরতার গ্যারান্টি।

C++ Constexpr স্ট্রিং এর ব্যবহার কি?

constexpr ব্যবহার করলে আরো কমপ্যাক্ট এবং অপ্টিমাইজ করা এক্সিকিউটেবল ফাইল হতে পারে। যেহেতু মানগুলি কম্পাইলার দ্বারা আগে থেকেই নির্ধারণ করা হয়, ফলস্বরূপ বাইনারিগুলি আকারে ছোট হতে পারে, সিস্টেম সংস্থানগুলির আরও অর্থনৈতিক ব্যবহার উপলব্ধি করে যা বিভিন্ন প্ল্যাটফর্মে সফ্টওয়্যারটির কার্যকারিতা বাড়াতে পারে। এই বৈশিষ্ট্যটির একটি বিশেষ উল্লেখযোগ্য সুবিধা হল এটি রানটাইম গণনার ক্ষেত্রে হ্রাস। যেহেতু মানগুলি সংকলন প্রক্রিয়ার সময় গণনা করা হয় যখনই সম্ভব, রানটাইম মূল্যায়ন কম প্রয়োজনীয় হয়ে ওঠে। এই দক্ষতা বৃদ্ধি শুধুমাত্র কার্য সম্পাদনকে ত্বরান্বিত করে না বরং সামগ্রিক প্রোগ্রামের ক্রিয়াকলাপকে স্ট্রিমলাইন করে।

উদাহরণ 1: ফ্যাক্টরিয়াল ক্যালকুলেশনের জন্য C++ এ Constexpr ব্যবহার করা

এই উদাহরণে, আমরা কনস্টেক্সপ্র ব্যবহার করব যা রান-টাইমের পরিবর্তে কম্পাইল-টাইমে গণনাগুলি সম্পাদন করতে দেয়। ফ্যাক্টোরিয়াল গণনা করার প্রেক্ষাপটে, একটি সাধারণ গাণিতিক ক্রিয়াকলাপ, যা কনস্টেক্সপ্র, কম্পাইলেশনের সময় ফ্যাক্টোরিয়াল মান গণনা করতে লিভারেজ করা যেতে পারে। আসুন নিম্নলিখিত কোডটি পরীক্ষা করে পর্যালোচনা করি এবং তারপর কোডটির ব্যাখ্যাটি দেখুন:







# অন্তর্ভুক্ত করুন

constexpr int ফ্যাক্টোরিয়াল ( int n ) {

ফিরে n <= 1 ? 1 : ( n * ফ্যাক্টোরিয়াল ( n - 1 ) ) ;

}

int প্রধান ( ) {

int একের উপর = 5 ;

std :: cout << 'এর ফ্যাক্টরিয়াল' << একের উপর << '=' << ফ্যাক্টোরিয়াল ( একের উপর ) << std :: endl ;

}

প্রদত্ত কোড উদাহরণটি পুনরাবৃত্তিমূলক উপায়ে একটি সংখ্যার ফ্যাক্টরিয়াল গণনা করার জন্য constexpr-এর ব্যবহার প্রদর্শন করে। কম্পাইলার এই উদাহরণে কম্পাইল-টাইমে ফ্যাক্টোরিয়াল এক্সপ্রেশন মূল্যায়ন করতে সক্ষম কারণ ফ্যাক্টোরিয়াল ফাংশনটি কনস্টেক্সপ্র স্পেসিফায়ারের সাথে ঘোষিত এবং সংজ্ঞায়িত করা হয়েছে। একটি C++ প্রোগ্রামে constexpr ব্যবহার করে, কম্পাইলার কম্পাইল-টাইমে 5 এর ফ্যাক্টরিয়াল এক্সপ্রেশন মূল্যায়ন করে, রানটাইম গণনার প্রয়োজনীয়তা দূর করে।



এখন, আসুন আমরা নির্দিষ্ট বিবরণ এবং ব্যাখ্যা সহ কোডের বিশদ ভাঙ্গন দেখি।



প্রথমত, আমরা #include ব্যবহার করি 'iostream' হেডার ফাইলটি অন্তর্ভুক্ত করতে যা কনসোলে প্রিন্ট করার জন্য 'std::cout' এর মতো প্রয়োজনীয় ইনপুট এবং আউটপুট কার্যকারিতা প্রদান করে।





এর পরে, আমরা ফ্যাক্টোরিয়াল() ফাংশন (পুনরাবৃত্ত) এ চলে যাই যা 'constexpr int ফ্যাক্টোরিয়াল(int n)'। এই ফ্যাক্টোরিয়াল() ফাংশনটি একটি পুনরাবৃত্ত ফাংশন সংজ্ঞায়িত করে যা একটি 'n' পূর্ণসংখ্যার ফ্যাক্টরিয়াল গণনা করে। Constexpr বোঝায় যে কর্মক্ষমতা অপ্টিমাইজেশান সংকলনের সময় ফাংশন মূল্যায়নের ফলে হতে পারে।

রিটার্ন n <= 1? 1 : (n * ফ্যাক্টোরিয়াল(n – 1)) লাইন পুনরাবৃত্তির জন্য একটি শর্তসাপেক্ষ অভিব্যক্তি নিয়োগ করে যা বলে যে যদি 'n' 1 এর থেকে কম বা সমান হয় তবে এটি 1 (বেস কেস) প্রদান করে। যদি তা না হয়, তাহলে এটি ফ্যাক্টোরিয়াল গণনা করে (n! = n * (n-1)!), যা ফ্যাক্টরিয়াল গণনার সাধারণ সূত্র, বারবার নিজেকে 'n – 1' দিয়ে কল করে এবং তারপর ফলাফলটিকে 'n' দ্বারা গুণ করে ” এই লাইনগুলো ফ্যাক্টরিয়াল ক্যালকুলেশনের জন্য দারোয়ানের মতো কাজ করে। সংখ্যাটি ভিত্তি স্তরে আছে কিনা তা পরীক্ষা করে এবং যদি তাই হয় 1 প্রদান করে। যদি না হয়, এটি ফাংশন কলগুলির একটি চেইন প্রতিক্রিয়া শুরু করে, প্রতিটি বেস কেস না পৌঁছানো পর্যন্ত ছোট সংখ্যায় কাজ করে। তারপরে, ফলাফলগুলি বিপরীত ক্রমে একসাথে গুণ করা হয়। আপনার রেফারেন্সের জন্য কোডের আউটপুট নিম্নলিখিত:



উদাহরণ 2: C++ Constexpr স্ট্রিং প্রদর্শন করে ছোট হাতের অক্ষর গণনা

এখানে, আমরা শিখব কিভাবে একটি countexpr স্ট্রিং ব্যবহার করে ছোট হাতের অক্ষরের সংখ্যা গণনা করা যায়। এই উদাহরণে, উদ্দেশ্য হল রানটাইম গণনা কমাতে constexpr বৈশিষ্ট্য ব্যবহার করে একটি প্রদত্ত স্ট্রিংয়ে ছোট হাতের অক্ষরের সংখ্যা গণনা করা। কাউন্টলোওয়ারকেস() ফাংশন, কনস্টেক্সপ্র হিসাবে ঘোষিত, একটি 'স্ট্রিং_ভিউ' স্ট্রিং এর প্যারামিটার হিসাবে নেয় এবং ইনপুট হিসাবে প্রদত্ত স্ট্রিংয়ের প্রতিটি অক্ষরের মাধ্যমে পুনরাবৃত্তি করে। প্রতিটি ছোট হাতের অক্ষরের জন্য যা আমরা সম্মুখীন হই, গণনা বৃদ্ধি করা হয়। ফলাফলটি কম্পাইলের সময় প্রাপ্ত হয় কারণ ফাংশনটি ধ্রুবক অভিব্যক্তিতে কাজ করে, কম্পাইল-টাইম মূল্যায়নের দক্ষতা এবং কর্মক্ষমতা সুবিধাগুলি প্রদর্শন করে। প্রথমে নিচের কোডটি চেক করুন। তারপরে, বিস্তারিত ব্যাখ্যায় যান:

# অন্তর্ভুক্ত করুন
# অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে ;
constexpr size_t কাউন্ট ছোট হাতের অক্ষর ( string_view s ) {
size_t গণনা = 0 ;
জন্য ( চর : s ) {
যদি ( কম ( ) ) {
গণনা ++;
}
}
ফিরে গণনা ;
}
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 ব্যবহার করে অ্যারে প্রদর্শন

একটি অ্যারে প্রদর্শন দেখায় যে অ্যারেগুলি একই ডেটা টাইপের উপাদানগুলির কাঠামোগত সংগ্রহ কীভাবে একটি প্রোগ্রামিং ভাষার মধ্যে তৈরি, অ্যাক্সেস করা এবং ম্যানিপুলেট করা হয়। নিম্নলিখিতটিতে, আমরা একটি কোডিং উদাহরণের মাধ্যমে ব্যাখ্যা করব যেখানে প্রোগ্রামটি কম্পাইল-টাইম অ্যারে ইনিশিয়ালাইজেশন এবং ম্যানিপুলেশনের একটি সহজ উদাহরণ প্রদান করে।

একটি অ্যারে প্রদর্শনী অ্যারে-এর ধারণাকে ব্যাখ্যা করে- উপাদানগুলির একটি কাঠামোগত সংগ্রহ যা একই ডেটা টাইপ ভাগ করে-এবং কীভাবে সেগুলি একটি প্রোগ্রামিং ভাষা ব্যবহার করে তৈরি, অ্যাক্সেস করা এবং ম্যানিপুলেট করা যায়। নিম্নলিখিত কোডিং উদাহরণে, আমরা দেখাব কিভাবে কম্পাইল-টাইমে একটি অ্যারে শুরু করা যায়, এর আকার গণনা করা যায় এবং প্রদত্ত অ্যারের উপাদানগুলি প্রিন্ট করা যায়। নিম্নলিখিত প্রদত্ত কোড দেখুন এবং ব্যাখ্যা এগিয়ে যান:

# অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে ;
int প্রধান ( ) {
constexpr int বিন্যাস [ 9 ] = { 5 , 55 , 555 , 5555 , 55555 } ;
constexpr int আকার_অ্যারে = আকার বিন্যাস / আকার ( int ) ;
cout << 'অ্যারের দৈর্ঘ্য হল = ' << আকার_অ্যারে << endl ;
cout << 'অ্যারের উপাদানগুলি হল = ' ;
জন্য ( int i = 0 ; i < আকার_অ্যারে ; ++ i ) {
cout << বিন্যাস [ i ] << ' ;
}
}

এই প্রোগ্রামটি একটি কনস্টেক্সপ্র অ্যারে শুরু করে, কম্পাইলের সময় এর দৈর্ঘ্য গণনা করে এবং তারপর অ্যারের দৈর্ঘ্য এবং উপাদানগুলি কনসোলে প্রিন্ট করে। Constexpr নিশ্চিত করে যে অ্যারে এবং এর বৈশিষ্ট্যগুলি কম্পাইলের সময় নির্ধারিত হয়। আসুন কোডটি ভাঙ্গুন এবং নির্দিষ্ট বিবরণগুলি একে একে ব্যাখ্যা করি:

স্ট্যান্ডার্ড ইনপুট-আউটপুট স্ট্রিম লাইব্রেরি অন্তর্ভুক্ত করতে, আউটপুটের জন্য 'cout' এর মতো ফাংশন ব্যবহারের অনুমতি দিয়ে, #include বলা হয়। প্রোগ্রামটি int main() ফাংশন থেকে এক্সিকিউশন শুরু করে। main() ফাংশনের মধ্যে, 'অ্যারেইন্ট[]' অ্যারেটি সংজ্ঞায়িত করা হয়েছে, যার আকার 9 এর সাথে একটি constexpr int arrayint[9] স্টেটমেন্ট রয়েছে। অ্যারেটি পাঁচটি সংখ্যা দিয়ে শুরু করা হয়েছে, এবং অবশিষ্ট উপাদানগুলি স্পষ্টভাবে 0 থেকে গেছে। int length_a = sizeof arrayint / sizeof(int); বাইটে 'অ্যারেইন্ট' এর আকার গণনা করে।

একটি 'ফর' লুপ 'অ্যারেইন্ট[]'অ্যারের উপাদানগুলির মাধ্যমে পুনরাবৃত্তি করে এবং তারপরে মানগুলি কনসোলে প্রিন্ট করা হয়। আসুন প্রদত্ত কোডের নিম্নলিখিত আউটপুটটি দেখি:

উপসংহার

C++-এ constexpr কীওয়ার্ডের প্রবর্তন এবং বিবর্তন কীভাবে ধ্রুবক অভিব্যক্তি এবং মানগুলি পরিচালনা করা হয় তা বিপ্লব করেছে। এই নিবন্ধটি তিনটি ব্যবহারিক উদাহরণ অন্বেষণ করেছে, কম্পিউটিং ফ্যাক্টোরিয়ালগুলিতে constexpr-এর শক্তি প্রদর্শন করে, ছোট হাতের অক্ষরগুলি গণনা করে এবং কম্পাইলের সময় অ্যারেগুলি শুরু করে৷ মূল টেকওয়ের মধ্যে রয়েছে উন্নত কর্মক্ষমতা, কম রানটাইম গণনা, এবং উন্নত মেমরি দক্ষতা। Constexpr একটি কোডবেসের মধ্যে নির্ভরযোগ্য, ধ্রুবক সত্তা তৈরি, অপরিবর্তনীয়তা নিশ্চিত করা এবং আরও সুগমিত এবং দক্ষ প্রোগ্রামগুলিতে অবদান রাখার জন্য একটি মূল্যবান সম্পদ।