Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में उपयोगकर्ता-परिभाषित लिटरल्स


यहां हम C++ में उपयोगकर्ता-परिभाषित लिटरल्स (User Defined Literals - UDL) की अवधारणा देखेंगे। C++11 संस्करण से, उपयोगकर्ता-परिभाषित लिटरल्स C++ में जोड़े गए हैं। C++ बिल्ट-इन प्रकारों के लिए लिटरल्स प्रदान करता है लेकिन ये सीमित हैं।

बिल्ट-इन लिटरल्स:

  • 31 (पूर्णांक)
  • 3.5 (डबल)
  • 4.2F (फ्लोट)
  • 'p' (कैरेक्टर)
  • 31ULL (अनसाइन्ड लॉन्ग लॉन्ग)
  • 0xD0 (अनसाइन्ड हेक्साडेसिमल पूर्णांक)
  • "pq" (स्ट्रिंग)

बिल्ट-इन लिटरल्स के अलावा, कभी-कभी हमें उपयोगकर्ता-परिभाषित लिटरल्स की आवश्यकता होती है। इसके कुछ कारण हैं। आइए कुछ उदाहरणों से समझते हैं:

मान लीजिए हम एक वजन वेरिएबल परिभाषित करना चाहते हैं, लेकिन हम इकाइयां निर्दिष्ट नहीं कर सकते, जैसे यदि हम परिभाषित करते हैं:

long double Weight = 3.5;

हमें इकाई के बारे में कोई जानकारी नहीं है (पाउंड? किलोग्राम? ग्राम?) लेकिन UDL का उपयोग करके हम मान के साथ इकाइयां जोड़ सकते हैं। इसके कुछ लाभ हैं: यह कोड को अधिक पठनीय बनाता है और कंपाइल टाइम पर रूपांतरण का समर्थन करता है।

weight = 5.6kg; ratio = 5.6kg/2.1lb;

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

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

#include<iostream> #include<iomanip> using namespace std; unsigned long long int operator"" _kb( unsigned long long int x ) { return x*1024; } unsigned long long int operator"" _b( unsigned long long int x ) { return x; } unsigned long long int operator"" _mb( unsigned long long int x ) { return x * 1024 * 1024; } int main() { unsigned long long int size = 24_kb; cout << "Size:" << size << endl; cout << "Few more MB:" << ( size + 2_mb ) << endl; cout << "Size Div:" <<( 10_kb / 2_kb ) << endl; cout << "1KB = " <<( 8_b * 128_b ) << endl; return 0; }

आउटपुट

Size:24576 Few more MB:2121728 Size Div:5 1KB = 1024

  1. - C++ में बूलियन लिटरल्स क्या हैं?

    बूलियन लिटरल्स वे लिटरल्स हैं जिनका अर्थ या तो true या false होता है। C++ में केवल दो बूलियन लिटरल्स हैं: true और false। ये लिटरल्स bool टाइप के होते हैं। आप इनका उपयोग इस प्रकार कर सकते हैं: उदाहरण #include <iostream> using namespace std; int main() { bool my_bool = true; if(my_bool

  1. - C++ में टोकन्स बनाम आइडेंटिफायर्स बनाम कीवर्ड्स

    एक टोकन C++ प्रोग्राम का सबसे छोटा तत्व है जो कंपाइलर के लिए सार्थक है। C++ पार्सर इन प्रकार के टोकन्स को पहचानता है: आइडेंटिफायर्स, कीवर्ड्स, लिटरल्स, ऑपरेटर्स, पंक्चुएटर्स, और अन्य सेपरेटर्स। इन टोकन्स की एक स्ट्रीम एक ट्रांसलेशन यूनिट बनाती है। टोकन्स आमतौर पर व्हाइट स्पेस द्वारा अलग किए जाते हैं

  1. - C++ टोकन्स से आप क्या समझते हैं?

    एक टोकन C++ प्रोग्राम का सबसे छोटा तत्व है जो कंपाइलर के लिए सार्थक है। C++ पार्सर इन प्रकार के टोकन्स को पहचानता है: आइडेंटिफायर्स, कीवर्ड्स, लिटरल्स, ऑपरेटर्स, पंक्चुएटर्स, और अन्य सेपरेटर्स। इन टोकन्स की एक स्ट्रीम एक ट्रांसलेशन यूनिट बनाती है। टोकन्स आमतौर पर व्हाइट स्पेस द्वारा अलग किए जाते हैं