C++ कॉन्स्टेक्सपीआर स्ट्रिंग उदाहरण

C Konsteksapi Ara Stringa Udaharana



यह आलेख constexpr के बारे में चर्चा करेगा, जो C++ प्रोग्रामिंग भाषा में एक उल्लेखनीय अतिरिक्त है जिसे C++11 में पेश किया गया है और C++14 में आगे बढ़ाया गया है, और कंपाइलर को संकेत देता है कि एक वेरिएबल, फ़ंक्शन या ऑब्जेक्ट कंस्ट्रक्टर एक कंपाइलर है- स्थिर समय। इसने डेवलपर्स के स्थिरांक बनाने और हेरफेर करने के तरीके में क्रांति ला दी। कॉन्स्टेक्सपीआर के माध्यम से, डेवलपर्स उन अभिव्यक्तियों और मूल्यों को परिभाषित कर सकते हैं जो अपरिवर्तनीय हैं और रनटाइम के बजाय संकलन के दौरान उनका मूल्यांकन किया जाता है। कॉन्स्टेक्सपीआर को कोड में शामिल करने का व्यापक लाभ इसकी स्थिरता की गारंटी है।

C++ कॉन्स्टेक्सपीआर स्ट्रिंग का क्या उपयोग है?

कॉन्स्टेक्सपीआर का उपयोग करने से अधिक कॉम्पैक्ट और अनुकूलित निष्पादन योग्य फ़ाइलें प्राप्त हो सकती हैं। चूंकि मान कंपाइलर द्वारा पहले से निर्धारित किए जाते हैं, परिणामी बायनेरिज़ आकार में छोटे हो सकते हैं, जिससे सिस्टम संसाधनों के अधिक किफायती उपयोग का एहसास होता है जो बदले में विभिन्न प्लेटफार्मों पर सॉफ़्टवेयर के प्रदर्शन को बढ़ा सकता है। इस सुविधा का एक विशेष महत्वपूर्ण लाभ यह है कि यह रनटाइम गणनाओं में कमी लाता है। चूंकि जब भी संभव हो संकलन प्रक्रिया के दौरान मूल्यों की गणना की जाती है, रनटाइम मूल्यांकन कम आवश्यक हो जाता है। यह दक्षता वृद्धि न केवल निष्पादन में तेजी लाती है बल्कि समग्र कार्यक्रम संचालन को सुव्यवस्थित भी करती है।

उदाहरण 1: फैक्टोरियल गणना के लिए C++ में कॉन्स्टेक्सपीआर का उपयोग करना

इस उदाहरण में, हम constexpr का उपयोग करेंगे जो गणनाओं को रन-टाइम के बजाय संकलन-समय पर निष्पादित करने की अनुमति देता है। फैक्टोरियल की गणना के संदर्भ में, संकलन के दौरान फैक्टोरियल मानों की गणना करने के लिए एक सामान्य गणितीय ऑपरेशन, जो कि constexpr है, का लाभ उठाया जा सकता है। आइए निम्नलिखित कोड की जांच और समीक्षा करें और फिर कोड की व्याख्या देखें:







#शामिल करें

constexpr int यहाँ कारख़ाने का ( int यहाँ एन ) {

वापस करना एन <= 1 ? 1 : ( एन * कारख़ाने का ( एन - 1 ) ) ;

}

int यहाँ मुख्य ( ) {

int यहाँ एक पर = 5 ;

कक्षा :: अदालत << 'का फैक्टोरियल' << एक पर << ' = ' << कारख़ाने का ( एक पर ) << कक्षा :: अंतः ;

}

दिया गया कोड उदाहरण पुनरावर्ती तरीके से किसी संख्या के फैक्टोरियल की गणना के लिए कॉन्स्टेक्सपीआर के उपयोग को दर्शाता है। कंपाइलर इस उदाहरण में संकलन-समय पर फैक्टोरियल अभिव्यक्ति का मूल्यांकन करने में सक्षम है क्योंकि फैक्टोरियल फ़ंक्शन को कॉन्स्टेक्सपीआर विनिर्देशक के साथ घोषित और परिभाषित किया गया है। C++ प्रोग्राम में constexpr का उपयोग करके, कंपाइलर कंपाइल-टाइम पर 5 की फैक्टोरियल अभिव्यक्ति का मूल्यांकन करता है, जिससे रनटाइम गणना की आवश्यकता समाप्त हो जाती है।



अब, आइए विशिष्ट विवरण और स्पष्टीकरण के साथ कोड का विस्तृत विवरण देखें।



सबसे पहले, हम 'iostream' हेडर फ़ाइल को शामिल करने के लिए #include का उपयोग करते हैं जो कंसोल पर प्रिंटिंग के लिए 'std::cout' जैसी आवश्यक इनपुट और आउटपुट कार्यक्षमता प्रदान करता है।





इसके बाद, हम Factorial() फ़ंक्शन (पुनरावर्ती) में चले जाते हैं जो कि 'constexpr int Factorial(int n)' है। यह फ़ैक्टोरियल() फ़ंक्शन एक पुनरावर्ती फ़ंक्शन को परिभाषित करता है जो 'एन' पूर्णांक के फ़ैक्टोरियल की गणना करता है। कॉन्स्टेक्सपीआर का तात्पर्य है कि संकलन के दौरान फ़ंक्शन का मूल्यांकन करने से प्रदर्शन अनुकूलन हो सकता है।

वापसी n <= 1 ? 1: (एन * फैक्टोरियल(एन - 1)) लाइन रिकर्सन के लिए एक सशर्त अभिव्यक्ति का उपयोग करती है जो बताती है कि यदि 'एन' 1 से कम या उसके बराबर है, तो यह 1 (बेस केस) लौटाता है। यदि नहीं, तो यह भाज्य गणना (n! = n * (n-1)!) करता है, जो भाज्य की गणना करने का सामान्य सूत्र है, खुद को बार-बार 'n - 1' कहकर और फिर परिणाम को 'n' से गुणा करके ”। ये रेखाएँ तथ्यात्मक गणना के लिए द्वारपाल की तरह कार्य करती हैं। यह जाँचता है कि संख्या आधार स्तर पर है या नहीं और यदि ऐसा है तो 1 लौटाता है। यदि नहीं, तो यह फ़ंक्शन कॉल की एक श्रृंखला प्रतिक्रिया शुरू कर देता है, प्रत्येक आधार मामले तक पहुंचने तक छोटी संख्याओं पर काम करता है। फिर, परिणामों को उल्टे क्रम में एक साथ गुणा किया जाता है। आपके संदर्भ के लिए कोड का आउटपुट निम्नलिखित है:



उदाहरण 2: C++ कॉन्स्टेक्सपीआर स्ट्रिंग को प्रदर्शित करने वाले लोअरकेस अक्षरों की गिनती

यहां, हम सीखेंगे कि काउंटएक्सपीआर स्ट्रिंग का उपयोग करके लोअरकेस अक्षरों की संख्या कैसे गिनें। इस उदाहरण में, उद्देश्य रनटाइम गणना को कम करने के लिए constexpr सुविधा का उपयोग करके किसी दिए गए स्ट्रिंग में लोअरकेस अक्षरों की संख्या की गणना करना है। काउंटलोअरकेस () फ़ंक्शन, जिसे कॉन्स्टेक्सपीआर के रूप में घोषित किया गया है, एक 'स्ट्रिंग_व्यू' स्ट्रिंग को अपने पैरामीटर के रूप में लेता है और इनपुट के रूप में दिए गए स्ट्रिंग के प्रत्येक वर्ण के माध्यम से पुनरावृत्त करता है। हमारे सामने आने वाले प्रत्येक छोटे अक्षर के लिए गिनती बढ़ जाती है। परिणाम तब संकलन समय पर प्राप्त होता है क्योंकि फ़ंक्शन निरंतर अभिव्यक्तियों पर काम करता है, जो संकलन-समय मूल्यांकन की दक्षता और प्रदर्शन लाभों को प्रदर्शित करता है। सबसे पहले, निम्नलिखित कोड की जाँच करें। फिर, विस्तृत विवरण पर आगे बढ़ें:

#शामिल करें
#शामिल <स्ट्रिंग_व्यू>
नेमस्पेस एसटीडी का उपयोग करना ;
constexpr आकार_t गिनतीलोअरकेस ( स्ट्रिंग_व्यू एस ) {
आकार_t गिनती करना = 0 ;
के लिए ( चार सी : एस ) {
अगर ( कम है ( सी ) ) {
गिनती करना ++;
}
}
वापस करना गिनती करना ;
}
int यहाँ मुख्य ( ) {
अदालत << 'कुल छोटे अक्षर' छोटे अक्षर 'हैं='
<< गिनतीलोअरकेस ( 'छोटे अक्षर' ) << अंतः ;
}

यहां प्रत्येक पंक्ति की व्याख्या के साथ कोड का विस्तृत विवरण दिया गया है:

संदेशों को मुद्रित करने के लिए मानक इनपुट/आउटपुट स्ट्रीम लाइब्रेरी का उपयोग करने के लिए #include को शामिल किया गया है। #include में कुशल स्ट्रिंग हेरफेर के लिए 'string_view' वर्ग शामिल है।

काउंटलोअरकेस() फ़ंक्शन में, 'constexpr size_t countlower(string_view s)' फ़ंक्शन, दिए गए स्ट्रिंग दृश्य में लोअरकेस अक्षरों की गणना करता है। Int main() प्रोग्राम का प्रवेश बिंदु है जो एक संदेश प्रिंट करता है जो 'LoWeR CaSe LeTtErS' में लोअरकेस अक्षरों की संख्या को इंगित करता है और इनपुट के रूप में 'LoWeR CaSe LeTtErS' के साथ काउंटलोअरकेस() फ़ंक्शन को कॉल करता है और परिणाम प्रिंट करता है। प्रोग्राम के निम्नलिखित आउटपुट का संदर्भ लें:

उदाहरण 3: C++ कॉन्स्टेक्सपीआर का उपयोग करके सरणी प्रदर्शन

एक सरणी प्रदर्शन से पता चलता है कि एक ही डेटा प्रकार के तत्वों के संरचित संग्रह वाले सरणी को प्रोग्रामिंग भाषा के भीतर कैसे बनाया, एक्सेस और हेरफेर किया जाता है। निम्नलिखित में, हम एक कोडिंग उदाहरण के माध्यम से समझाएंगे जिसमें प्रोग्राम संकलन-समय सरणी आरंभीकरण और हेरफेर का एक सरल उदाहरण प्रदान करता है।

एक सारणी प्रदर्शन सारणियों की अवधारणा को दर्शाता है - तत्वों का एक संरचित संग्रह जो समान डेटा प्रकार साझा करता है - और प्रोग्रामिंग भाषा का उपयोग करके उन्हें कैसे बनाया, एक्सेस और हेरफेर किया जा सकता है। निम्नलिखित कोडिंग उदाहरण में, हम प्रदर्शित करेंगे कि संकलन-समय पर किसी सरणी को कैसे आरंभ किया जाए, उसके आकार की गणना की जाए और दिए गए सरणी के तत्वों को प्रिंट किया जाए। निम्नलिखित दिए गए कोड को देखें और स्पष्टीकरण के लिए आगे बढ़ें:

#शामिल करें
नेमस्पेस एसटीडी का उपयोग करना ;
int यहाँ मुख्य ( ) {
constexpr int यहाँ arrayint [ 9 ] = { 5 , 55 , 555 , 5555 , 55555 } ;
constexpr int यहाँ आकार_सरणी = का आकार arrayint / का आकार ( int यहाँ ) ;
अदालत << 'सरणी की लंबाई है =' << आकार_सरणी << अंतः ;
अदालत << 'सरणी में तत्व हैं = ' ;
के लिए ( int यहाँ मैं = 0 ; मैं < आकार_सरणी ; ++ मैं ) {
अदालत << arrayint [ मैं ] << '' ;
}
}

यह प्रोग्राम एक कॉन्स्टेक्सपीआर सरणी को आरंभ करता है, संकलन समय पर इसकी लंबाई की गणना करता है, और फिर सरणी की लंबाई और तत्वों को कंसोल पर प्रिंट करता है। कॉन्स्टेक्सपीआर यह सुनिश्चित करता है कि सरणी और उसके गुण संकलन समय पर निर्धारित किए जाते हैं। आइए कोड को तोड़ें और विशिष्ट विवरण एक-एक करके समझाएं:

मानक इनपुट-आउटपुट स्ट्रीम लाइब्रेरी को शामिल करने के लिए, आउटपुट के लिए 'काउट' जैसे फ़ंक्शन के उपयोग की अनुमति देते हुए, #include को कहा जाता है। प्रोग्राम int main() फ़ंक्शन से निष्पादन शुरू करता है। मुख्य() फ़ंक्शन के भीतर, 'arrayint[]' ऐरे को परिभाषित किया गया है, जिसका आकार constexpr int arrayint[9] स्टेटमेंट के साथ 9 है। सरणी को पांच संख्याओं के साथ प्रारंभ किया गया है, और शेष तत्व स्पष्ट रूप से 0 बने हुए हैं। int length_a = sizeof arrayint / sizeof(int); बाइट्स में 'सरणी' के आकार की गणना करता है।

एक 'फॉर' लूप 'एरेइंट[]' एरे के तत्वों के माध्यम से पुनरावृत्त होता है, और फिर मान कंसोल पर मुद्रित होते हैं। आइए दिए गए कोड का निम्नलिखित आउटपुट देखें:

निष्कर्ष

C++ में constexpr कीवर्ड के परिचय और विकास ने निरंतर अभिव्यक्तियों और मूल्यों को संभालने के तरीके में क्रांति ला दी है। इस लेख में तीन व्यावहारिक उदाहरणों की खोज की गई है, जिसमें फैक्टोरियल की गणना करने, छोटे अक्षरों की गिनती करने और संकलन समय पर सरणियों को आरंभ करने में कॉन्स्टेक्सपीआर की शक्ति का प्रदर्शन किया गया है। मुख्य बातों में बेहतर प्रदर्शन, कम रनटाइम गणना और बेहतर मेमोरी दक्षता शामिल हैं। कॉन्स्टेक्सपीआर एक कोडबेस के भीतर विश्वसनीय, निरंतर इकाइयां बनाने, अपरिवर्तनीयता सुनिश्चित करने और अधिक सुव्यवस्थित और कुशल कार्यक्रमों में योगदान करने के लिए एक मूल्यवान संपत्ति है।