चूंकि C ++ 17 एक ifब्लॉक लिख सकता है जो इस तरह से एक बार निष्पादित हो जाएगा:
#include <iostream>
int main() {
for (unsigned i = 0; i < 10; ++i) {
if (static bool do_once = true; do_once) { // Enter only once
std::cout << "hello one-shot" << std::endl;
// Possibly much more code
do_once = false;
}
}
}
मुझे पता है कि मैं इसे उखाड़ फेंक सकता हूं, और इसे हल करने के अन्य तरीके भी हैं, लेकिन फिर भी - क्या यह इस तरह से किसी भी तरह से लिखना संभव है, इसलिए do_once = falseअंत में कोई आवश्यकता नहीं है ?
if (DO_ONCE) {
// Do stuff
}
मैं एक सहायक कार्य सोच रहा हूँ do_once(), जिसमें शामिल है static bool do_once, लेकिन क्या होगा अगर मैं अलग-अलग स्थानों में उसी फ़ंक्शन का उपयोग करना चाहता हूं? यह समय और जगह के लिए एक हो सकता है #define? मुझे आशा नहीं है।
std::call_onceएक विकल्प है (यह थ्रेडिंग के लिए उपयोग किया जाता है, लेकिन फिर भी यह काम करता है)।
ifस्थिति में आरंभिक चर हो सकते हैं static। यह चालाकी है।
if (i == 0)? यह काफी स्पष्ट है।