C++ में टास्क क्यू: शुरुआती प्रोग्रामर्स के लिए गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: C++ में टास्क क्यू की ज़रूरत क्यों?

\n

कल्पना कीजिए कि आप सुपरमार्केट के कैश काउंटर पर लाइन में खड़े हैं। जो पहले आया, उसे पहले सर्विस मिलती है। प्रोग्रामिंग में इसी स्ट्रक्चर को क्यू (queue) कहते हैं। यह एक बुनियादी डेटा टाइप है जो FIFO (First In, First Out) सिद्धांत पर काम करता है – "पहले आया, पहले गया"।

\n

C++ में टास्क क्यू का उपयोग हर जगह होता है: नेटवर्क रिक्वेस्ट प्रोसेस करने से लेकर मल्टीथ्रेडेड एप्लिकेशन में थ्रेड मैनेज करने तक। शुरुआती प्रोग्रामर के लिए क्यू को समझना एडवांस टॉपिक्स जैसे एसिंक्रोनस प्रोग्रामिंग और डिज़ाइन पैटर्न सीखने की दिशा में एक कदम है।

\n

इस आर्टिकल में हम C++ में क्यू बनाना और उपयोग करना सीखेंगे, स्टैंडर्ड कंटेनर std::queue को समझेंगे, कई प्रैक्टिकल उदाहरण लिखेंगे और शुरुआती लोगों की सामान्य गलतियों पर चर्चा करेंगे।

\n\n

क्यू की बेसिक्स: थ्योरी और पहला उदाहरण

\n

क्यू क्या है?

\n

क्यू एक एब्सट्रैक्ट डेटा टाइप है जो दो मुख्य ऑपरेशन सपोर्ट करता है:

\n
    \n
  • एलिमेंट जोड़ना क्यू के अंत में (enqueue / push);
  • \n
  • एलिमेंट निकालना क्यू की शुरुआत से (dequeue / pop).
  • \n
\n

C++ में स्टैंडर्ड क्यू हेडर फ़ाइल <queue> में std::queue क्लास के रूप में उपलब्ध है। डिफ़ॉल्ट रूप से यह std::deque को बेस कंटेनर के रूप में उपयोग करता है, लेकिन आप इसे std::list से भी बदल सकते हैं।

\n\n

पहला उदाहरण: नंबरों की क्यू

\n

चलिए एक सरल प्रोग्राम लिखते हैं जो इंटिजर की क्यू बनाता है, उसमें कुछ वैल्यू जोड़ता है और उन्हें स्क्रीन पर दिखाता है।

\n
#include <iostream>\n#include <queue>\n\nint main() {\n    std::queue<int> my_queue;\n\n    // क्यू में एलिमेंट जोड़ना\n    my_queue.push(10);\n    my_queue.push(20);\n    my_queue.push(30);\n\n    std::cout << "पहला एलिमेंट (front): " << my_queue.front() << std::endl;\n    std::cout << "आखिरी एलिमेंट (back): " << my_queue.back() << std::endl;\n    std::cout << "क्यू का साइज़: " << my_queue.size() << std::endl;\n\n    // एलिमेंट निकालना\n    while (!my_queue.empty()) {\n        std::cout << "निकाला गया: " << my_queue.front() << std::endl;\n        my_queue.pop();\n    }\n\n    return 0;\n}
\n

प्रोग्राम का आउटपुट:

\n
पहला एलिमेंट (front): 10\nआखिरी एलिमेंट (back): 30\nक्यू का साइज़: 3\nनिकाला गया: 10\nनिकाला गया: 20\nनिकाला गया: 30
\n

ध्यान दें: front() पहला एलिमेंट लौटाता है (जो अगला निकाला जाएगा), और back() सबसे आखिर में जोड़ा गया एलिमेंट लौटाता है। pop() मेथड एलिमेंट को हटाता है लेकिन उसे लौटाता नहीं – यह याद रखना ज़रूरी है!

\n\n

std::queue के मुख्य मेथड

\n

क्यू के साथ प्रभावी ढंग से काम करने के लिए इसके सभी मेथड जानना ज़रूरी है। यहाँ पूरी लिस्ट है:

\n
    \n
  • push(const T& value) – क्यू के अंत में एलिमेंट जोड़ता है;
  • \n
  • pop() – पहला एलिमेंट हटाता है (इसे लौटाता नहीं);
  • \n
  • front() – पहले एलिमेंट का रेफरेंस लौटाता है;
  • \n
  • back() – आखिरी एलिमेंट का रेफरेंस लौटाता है;
  • \n
  • empty() – जाँचता है कि क्यू खाली है या नहीं (true/false लौटाता है);
  • \n
  • size() – एलिमेंट की संख्या लौटाता है।
  • \n
\n

महत्वपूर्ण: front() या pop() कॉल करने से पहले हमेशा empty() से जाँच करें कि क्यू खाली तो नहीं है। खाली क्यू के एलिमेंट तक पहुँचने की कोशिश करने से अनिर्धारित व्यवहार होगा (संभवतः प्रोग्राम क्रैश हो जाएगा)।

\n\n

प्रैक्टिकल उदाहरण: टास्क क्यू

\n

अब एक वास्तविक स्थिति को मॉडल करते हैं। मान लीजिए हमारे पास एक सिस्टम है जो ऑर्डर प्रोसेस करता है। हर ऑर्डर एक स्ट्रक्चर है जिसमें नंबर और विवरण होता है। हम ऑर्डर को क्यू में डालते हैं।

ब्लॉग

पुस्तक अनुशंसाएँ