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

C++ . की छिपी विशेषताएं

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

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

if ((n & 1) != 0) {
   //this is odd
} else {
   //This is even
}

शिफ्ट ऑपरेटर का उपयोग करके तेजी से गुणा और भाग करें। यदि हम किसी संख्या को 2n जैसी संख्या से गुणा करना चाहते हैं तो हम संख्या को बाईं ओर n बार सरल रूप से स्थानांतरित कर सकते हैं। इसी तरह, यदि हम किसी संख्या को 2n से विभाजित करना चाहते हैं तो संख्या को n बार दाईं ओर शिफ्ट करें।

x = 40;
y = x << 2; //x will be multiplied with 4, so y = 160
cout << x;
x = 40;
y = x >> 2; //x will be divided by 4, so y = 10
cout << x;

हम तीसरे वेरिएबल का उपयोग किए बिना दो नंबरों को स्वैप कर सकते हैं। यह + और - ऑपरेटरों का उपयोग करके किया जा सकता है। लेकिन हम इसे बिटवाइज़ XOR ऑपरेटरों का उपयोग करके भी कर सकते हैं। सुनिश्चित करने के लिए आप मैन्युअल रूप से संख्याओं की जांच कर सकते हैं।

//swap x and y
x ^= y;
y ^= x;
x ^= y;

कभी-कभी कुछ बाधाएं होती हैं कि, हम अपने कोड में strlen() फ़ंक्शन का उपयोग नहीं कर सकते हैं। उस स्थिति में हम अपना स्वयं का strlen() फ़ंक्शन बनाते हैं। यदि मामला केवल पात्रों तक पहुंच रहा है, तो हमें वास्तव में ऐसा करने की आवश्यकता नहीं है। हम जांच सकते हैं कि स्थिति i पर वर्ण वैध (गैर-शून्य) है या नहीं। यदि यह शून्य नहीं है तो हम पार कर सकते हैं, अन्यथा रुक सकते हैं।

for(int i = 0; s[i]; i++) {
   cout << s[i];
}

अक्सर हम वेक्टर आदि जैसे कुछ कंटेनरों में नए तत्व जोड़ने के लिए एसटीएल में push_back() फ़ंक्शन का उपयोग करते हैं। इसका उपयोग किए बिना, हम emplace_back() का भी उपयोग कर सकते हैं। यह फ़ंक्शन बहुत तेज़ है। यह स्मृति को कहीं और आवंटित नहीं करता है, यह आवंटित स्मृति को कंटेनर में जोड़ता है।

C++ इनबिल्ट GCD फ़ंक्शन प्रदान करता है। हम उन्हें विभिन्न मामलों में उपयोग कर सकते हैं। सिंटैक्स नीचे जैसा है।

__gcd(x, y) //find GCD of x and y

मुख्य फ़ंक्शन में किसी सरणी का अधिकतम आकार 10^6 के क्रम का होता है। लेकिन अगर सरणी को विश्व स्तर पर घोषित किया जाता है, तो हम आकार को 10^7 तक घोषित कर सकते हैं।

हम लॉग ऑपरेशन का उपयोग करके किसी भी संख्या के सबसे महत्वपूर्ण अंक की गणना कर सकते हैं। विचार प्राप्त करने के लिए निम्न तर्क देखें

n = 4578;
double k = log10(n);
k = k – floor(k);
int x = pow(10, k); //x is the most significant digit

लॉग ऑपरेशन का उपयोग करके सीधे अंकों की संख्या की गणना करें। हम इसके लिए किसी लूप का उपयोग नहीं करते हैं।

n = 4578;
int digit_count = floot(log10(n)) + 1

हम इस तर्क का उपयोग करके सीधे जांच कर सकते हैं कि संख्या 2 की शक्ति है या नहीं।

x = 1024;
bool check = x && (!(x & (x-1))); //if this is true, then power of two.

C++ में कुछ इनबिल्ट एल्गोरिथम हैं, जो निम्न स्थितियों की जांच कर सकते हैं।

all_of(left, left + n, isPositive()); //check all are positive or not
any_of(left, left + n, isPositive()); //check at least one positive or not.
none_of(left, left + n, isPositive()); //check no elements are positive

तत्वों को एक कंटेनर से दूसरे कंटेनर में कॉपी करने के लिए फ़ंक्शन कॉपी करें।

int src[5] = {10, 20, 30, 40, 50};
int des[5];
copy_n(src, 5, dest);

itoa() नामक एक एल्गोरिदम है। इस एल्गोरिथम का उपयोग क्रमिक रूप से बढ़ते मूल्यों की एक श्रृंखला बनाने के लिए किया जा सकता है जैसे कि प्रारंभिक मान को *पहले निर्दिष्ट करके, फिर पोस्ट इंक्रीमेंट ऑपरेटर का उपयोग करके मान का उपयोग करना।

int arr[5] = {0};
char str[5] = {0};
itoa(arr, arr+5, 15); //it will generate {15, 16, 17, 18, 19}
itoa(str, str+5, ‘A’); //it will generate {‘A’, ‘B’, ‘C’, ‘D’, ‘E’}
जेनरेट करेगा

बाइनरी फॉर्म में मान असाइन करें। हम कुछ बाइनरी नंबर के साथ 0b उपसर्ग का उपयोग कर सकते हैं यह दर्शाने के लिए कि संख्या बाइनरी में प्रदान की गई है।

int x = 0b1101; //then x will hold 13

सी ++ में, हम सशर्त ऑपरेटरों का उपयोग किए बिना कीवर्ड का उपयोग कर सकते हैं। जैसे कीवर्ड 'और' का इस्तेमाल '&' के स्थान पर किया जा सकता है।

x = 10;
if(x < 10 and x > 5)
   cout << “True” << endl;
else
   cout << “False” << endl;
//This will return True

  1. Windows 10 हिडन विशेषताएं:नहीं या हां?

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

  1. C# में C++ फीचर्स क्या गायब हैं?

    C# एक सरल, आधुनिक, सामान्य-उद्देश्य, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है जिसे Microsoft द्वारा एंडर्स हेजल्सबर्ग के नेतृत्व में अपनी .NET पहल के तहत विकसित किया गया है। C++ एक मध्यम-स्तरीय प्रोग्रामिंग भाषा है, जिसे 1979 में बेल लैब्स में बर्जने स्ट्रॉस्ट्रुप द्वारा विकसित किया गया था। C++ विभिन

  1. macOS Mojave में 10 छिपी हुई विशेषताएं

    हालाँकि यह अभी भी बीटा चरण में है, macOS Mojave अंततः बाहर और यहाँ है। Apple ने OS को जल्दी रिलीज़ किया ताकि उपयोगकर्ता बग और समस्याओं को खोजने में उनकी मदद कर सकें। और इसके जारी होने के साथ, आपने शायद पहले ही कई दिलचस्प macOS Mojave सुविधाओं के बारे में सुना होगा, जैसे कि डेस्कटॉप स्टैक, डार्क मोड