सी ++ में संरचना बाध्यकारी

Si Mem Sanracana Badhyakari



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

C++ में स्ट्रक्चर्ड बाइंडिंग क्या है?

स्ट्रक्चर बाइंडिंग एक C ++ फीचर है जिसे C ++ 17 में जोड़ा गया था जो कोड की संक्षिप्तता में सुधार करते हुए स्ट्रक्चर या ट्यूपल को अलग-अलग वेरिएबल्स में अपघटित करने की अनुमति देता है। इसका उपयोग स्ट्रक्चर मेंबर एक्सेस सिंटैक्स को सरल बनाने और टाइपो या गलत इंडेक्सिंग द्वारा लाए गए त्रुटियों की संभावना को कम करने के लिए किया जा सकता है।

वाक्य - विन्यास







C++ में स्ट्रक्चर बाइंडिंग का सिंटैक्स इस प्रकार है:



ऑटो [ var1 , var2 , ... ] = अभिव्यक्ति ;

C++ में स्ट्रक्चर बाइंडिंग के लिए सिंटैक्स में, जहां 'var1', और 'var2' वेरिएबल नाम हैं, और 'एक्सप्रेशन' एक एक्सप्रेशन है जो एक स्ट्रक्चर या क्लास देता है। हम स्वचालित रूप से बनाए गए चर घोषित करने के लिए ऑटो कीवर्ड का उपयोग करते हैं।



संशोधक

संशोधक का उपयोग संरचित बाइंडिंग के साथ युग्मन में किया जा सकता है। इनका सिंटैक्स नीचे दिया गया है:





ऑटो और [ , बी , सी , ... ] = अभिव्यक्ति ;

ऑटो && [ , बी , सी , ... ] = अभिव्यक्ति ;

घोषणा में उपयोग किया गया '&' या '&&' ऑपरेटर परिभाषित करता है कि क्या बाइंडिंग एक लवल्यू या रेवल्यू रेफरेंस है। '&' द्वारा दर्शाया गया एक लवल्यू संदर्भ एक संदर्भ स्थापित करता है जिसका उपयोग बाध्यकारी चर के मूल्यों को बदलने के लिए किया जा सकता है। संदर्भ का उपयोग करके किए गए मूल्यों में परिवर्तन मूल संरचना या टपल में देखा जाएगा।

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



उदाहरण 1: C++ में स्ट्रक्चर बाइंडिंग

निम्नलिखित C++ स्ट्रक्चर बाइंडिंग का एक उदाहरण है:

#शामिल <बिट्स/एसटीडीसी++.एच>

नेमस्पेस एसटीडी का उपयोग करना ;

struct घनक्षेत्र

{

int यहाँ एक्स ;

int यहाँ और ;

int यहाँ साथ ;

} ;

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

{

सी घन = { 10 , बीस , 30 } ;

ऑटो [ x_निर्देशांक , y_निर्देशांक , z_निर्देशांक ] = सी ;

अदालत << 'एक्स अक्ष:' << x_निर्देशांक << endl ;

अदालत << 'वाई-अक्ष:' << y_निर्देशांक << endl ;

अदालत << 'जेड अक्ष:' << z_निर्देशांक << endl ;

वापस करना 0 ;

}

उपरोक्त उदाहरण में, हम तीन पूर्णांक x, y और z के साथ एक स्ट्रक्चर क्यूब घोषित करते हैं। संरचना अंतरिक्ष में एक घन दिखाती है। प्रकार घन का एक चर c बनाया गया है और मानों (10,20,30) के साथ आरंभ किया गया है। इस कोड संरचना में बाइंडिंग सदस्य x, y, और z के मान को अलग-अलग चर x_coordinate, y_coordinate, z_coordinate क्रमशः सिंटैक्स ऑटो [ x_coordin, y_coordin, z_coordinate] = c का उपयोग करके असाइन करता है। उपरोक्त का आउटपुट नीचे दिखाया गया है:

उदाहरण 2: स्ट्रक्चर को अनपैक करने के लिए C++ में स्ट्रक्चर बाइंडिंग

निम्नलिखित संरचना को अनपैक करने के लिए बाध्यकारी संरचना का एक उदाहरण है:

#शामिल

#शामिल <स्ट्रिंग>

नेमस्पेस एसटीडी का उपयोग करना ;

struct विद्यार्थी {

स्ट्रिंग नाम ;

int यहाँ आयु ;

} ;

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

छात्र एस { 'हमजा' , 32 } ;

ऑटो [ नाम , आयु ] = एस ;

अदालत << नाम << ' है ' << आयु << ' वर्षों पुराना।' << endl ;

वापस करना 0 ;

}

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

उदाहरण 3: संशोधक के साथ C++ में स्ट्रक्चर बाइंडिंग

नीचे स्ट्रक्चर बाइंडिंग का एक उदाहरण दिया गया है जो एक वेरिएबल के मान को num1 और num2 के रूप में अपडेट करने के लिए संशोधक का उपयोग करता है:

#शामिल

#शामिल

नेमस्पेस एसटीडी का उपयोग करना ;

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

टपल < int यहाँ , int यहाँ > टी { 25 , बीस } ;

ऑटो और [ संख्या 1 , num2 ] = टी ;

अदालत << 'Num1 का मान =' << संख्या 1 << ', संख्या 2 =' << num2 << ' \एन ' ;

संख्या 1 = 30 ;

अदालत << 'Num1 का परिवर्तित मान =' << संख्या 1 << ', संख्या 2 =' << num2 <<

' \एन ' ;

ऑटो && [ संख्या 3 , अंक 4 ] = make_tuple ( 100 , 250 ) ;

अदालत << 'अब num3 का मान =' << संख्या 3 << ', संख्या 4 =' << अंक 4 << ' \एन ' ;

वापस करना 0 ;

}

पिछले कोड में, हम एक टपल टी बनाते हैं और इसके घटकों को संख्या 1 और संख्या 2 से जोड़ने के लिए लवल्यू संदर्भ का उपयोग करते हैं। फिर हम num1 के मान को 30 में बदलते हैं और num1 और num2 मानों को आउटपुट करते हैं। Make_tuple(100, 250) के माध्यम से एक अस्थायी टपल भी बनाएं और इसके तत्वों को num3 और num4 से जोड़ने के लिए एक रेवल्यू संदर्भ का उपयोग करें। num3 और num4 के मान तब प्रिंट किए जाते हैं क्योंकि num3 और num4 को रैल्यू रेफरेंस के साथ जोड़ा जाता है, उनका उपयोग make_tuple(100, 250) द्वारा बनाए गए अस्थायी टपल को बदलने के लिए नहीं किया जा सकता है। वे केवल इससे पढ़ने में सक्षम हैं। जब आप प्रोग्राम निष्पादित करते हैं, तो निम्न परिणाम स्क्रीन पर प्रदर्शित होंगे:

निष्कर्ष

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