C ++ 17 beri iftam olarak böyle bir kez yürütülecek bir blok yazabilirsiniz :
#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;
}
}
}
Bunu düşünüyor olabileceğimi biliyorum, ve bunu çözmenin başka yolları da var, ama yine de - bunu böyle bir şekilde yazmak mümkün do_once = falsemü , bu yüzden sonunda buna gerek yok mu?
if (DO_ONCE) {
// Do stuff
}
Yardımcı bir işlev düşünüyorum do_once(), içeren static bool do_once, ama ya aynı işlevi farklı yerlerde kullanmak istersem? Bu bir zaman ve yer olabilir #definemi? Umarım değildir.
std::call_oncebir seçenektir (diş açma için kullanılır, ancak yine de işidir).
ifkoşulda başlatılan değişkenlerin olabileceği aklıma gelmedi static. Zekice.
if (i == 0)? Yeterince açık.