यहां हम C++ प्रोग्रामिंग भाषा के कुछ अच्छे ट्रिक्स देखेंगे जो विभिन्न क्षेत्रों में हमारी मदद कर सकते हैं। जैसे यदि हम किसी प्रतिस्पर्धात्मक प्रोग्रामिंग आयोजन में भाग लेना चाहते हैं, तो ये ट्रिक्स कोड लिखने में लगने वाले समय को कम करने में मदद करेंगे। आइए इन उदाहरणों को एक-एक करके देखते हैं।
1. % ऑपरेटर के बिना विषम/सम जांच
हम संख्या और 1 के साथ बिटवाइज़ AND ऑपरेशन कर सकते हैं। यदि परिणाम शून्येतर है तो विषम, अन्यथा सम।
if ((n & 1) != 0) {
// यह विषम है
} else {
// यह सम है
}
2. शिफ्ट ऑपरेटर से तेज गुणा/भाग
2ⁿ से गुणा के लिए बाएं शिफ्ट n बार, 2ⁿ से भाग के लिए दाएं शिफ्ट n बार।
x = 40; y = x << 2; // x * 4 = 160 cout << y; x = 40; y = x >> 2; // x / 4 = 10 cout << y;
3. तीसरे वेरिएबल के बिना स्वैप (XOR)
// x और y स्वैप करें x ^= y; y ^= x; x ^= y;
4. strlen() के बिना स्ट्रिंग ट्रैवर्सल
for(int i = 0; s[i]; i++) {
cout << s[i];
}
5. push_back() के बजाय emplace_back()
emplace_back() तेज है क्योंकि यह कंटेनर में सीधे ऑब्जेक्ट बनाता है, अस्थायी ऑब्जेक्ट बनाकर कॉपी/मूव नहीं करता।
6. इनबिल्ट GCD फ़ंक्शन
__gcd(x, y) // x और y का GCD
7. सरणी आकार सीमाएं
- लोकल (main में): ~10⁶
- ग्लोबल: ~10⁷
8. लॉग से सबसे महत्वपूर्ण अंक (MSD)
n = 4578; double k = log10(n); k = k - floor(k); int x = pow(10, k); // x = 4 (MSD)
9. लॉग से अंकों की संख्या
n = 4578; int digits = floor(log10(n)) + 1; // 4
10. 2 की घात जांच
x = 1024; bool isPowerOfTwo = x && (!(x & (x-1))); // true
11. एल्गोरिदम: all_of, any_of, none_of
all_of(begin, end, pred); // सभी प्रीडिकेट सेटिस्फाई करते हैं any_of(begin, end, pred); // कम से कम एक सेटिस्फाई करता है none_of(begin, end, pred); // कोई भी सेटिस्फाई नहीं करता
12. copy_n: कंटेनर्स के बीच कॉपी
int src[5] = {10, 20, 30, 40, 50};
int dest[5];
copy_n(src, 5, dest);
13. iota: क्रमिक मान भरें
int arr[5];
iota(arr, arr+5, 10); // {10, 11, 12, 13, 14}
14. बाइनरी लिटरल्स (C++14+)
int x = 0b1101; // 13
15. वैकल्पिक ऑपरेटर कीवर्ड्स
and (&&), or (||), not (!), bitand (&), bitor (|), xor (^), compl (~), and_eq (&=), or_eq (|=), xor_eq (^=), not_eq (!=)।
if (x < 10 and x > 5) cout << "True";