যেহেতু সি ++ ১ one জন একটি 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)
? এটা যথেষ্ট পরিষ্কার।