C++ मानक पुस्तकालय: पूर्ण अवलोकन
\n\nC++ मानक पुस्तकालय (C++ Standard Library) कक्षाओं, फ़ंक्शनों, मैक्रोज़ और टेम्पलेट्स का एक शक्तिशाली सेट है जो किसी भी C++ कंपाइलर के साथ आता है। यह डेटा कंटेनरों के साथ काम करने से लेकर नेटवर्क इंटरैक्शन और मल्टीथ्रेडिंग तक अधिकांश सामान्य कार्यों के लिए तैयार समाधान प्रदान करता है। इस लेख में, हम पुस्तकालय के मुख्य घटकों पर चर्चा करेंगे, कोड उदाहरण दिखाएंगे और समझाएंगे कि इसकी क्षमताओं का प्रभावी ढंग से उपयोग कैसे करें।
\n\nमानक पुस्तकालय के मुख्य घटक
\n\nमानक पुस्तकालय कई बड़े वर्गों में विभाजित है:
\n\n- \n
- STL (Standard Template Library) — कंटेनर, इटरेटर, एल्गोरिदम और फंक्शनल ऑब्जेक्ट्स। \n
- इनपुट/आउटपुट — स्ट्रीम (
iostream), फ़ाइल स्ट्रीम (fstream), स्ट्रिंग स्ट्रीम (sstream)। \n - स्ट्रिंग्स — क्लास
std::stringऔरstd::string_view। \n - संख्यात्मक संचालन — गणितीय फ़ंक्शन (
cmath), रैंडम संख्याएँ (random), कॉम्प्लेक्स संख्याएँ (complex)। \n - मल्टीथ्रेडिंग — थ्रेड (
thread), म्यूटेक्स, कंडीशनल वेरिएबल्स। \n - उपयोगिताएँ —
std::optional,std::variant,std::any, स्मार्ट पॉइंटर्स (shared_ptr,unique_ptr)। \n
STL कंटेनर
\n\nकंटेनर टेम्पलेट क्लासेस हैं जो ऑब्जेक्ट्स के संग्रह को संग्रहीत करने के लिए डिज़ाइन किए गए हैं। वे अनुक्रमिक और साहचर्य में विभाजित हैं।
\n\nअनुक्रमिक कंटेनर
\n\n- \n
std::vector— डायनामिक ऐरे। इंडेक्स द्वारा तेज़ पहुँच, बीच में धीमी इंसर्शन। \n std::deque— डबल-एंडेड क्यू। दोनों सिरों से तेज़ इंसर्शन/डिलीट। \n std::list— डबली लिंक्ड लिस्ट। कहीं भी तेज़ इंसर्शन/डिलीट, लेकिन इंडेक्स द्वारा धीमी पहुँच। \n
#include <iostream>\n#include <vector>\n\nint main() {\n std::vector<int> numbers = {10, 20, 30, 40};\n numbers.push_back(50); // अंत में जोड़ना\n for (int n : numbers) {\n std::cout << n << " ";\n }\n return 0;\n}\n\nसाहचर्य कंटेनर
\n\n- \n
std::set— अद्वितीय तत्वों का सेट (सॉर्टेड)। \n std::map— "कुंजी-मान" शब्दकोश (कुंजी द्वारा सॉर्टेड)। \n std::unordered_set/std::unordered_map— हैश टेबल्स (सॉर्टेड नहीं, लेकिन तेज़)। \n
#include <iostream>\n#include <map>\n\nint main() {\n std::map<std::string, int> ages;\n ages["Alice"] = 30;\n ages["Bob"] = 25;\n for (const auto& [name, age] : ages) {\n std::cout << name << ": " << age << std::endl;\n }\n return 0;\n}\n\nएल्गोरिदम
\n\nलाइब्रेरी <algorithm> में अनुक्रमों के साथ काम करने के लिए 100 से अधिक एल्गोरिदम शामिल हैं: सॉर्टिंग, सर्चिंग, कॉपी करना, ट्रांसफॉर्मेशन आदि। सभी एल्गोरिदम इटरेटर के माध्यम से काम करते हैं, जो उन्हें सार्वभौमिक बनाता है।
#include <iostream>\n#include <algorithm>\n#include <vector>\n\nint main() {\n std::vector<int> v = {5, 2, 8, 1, 9};\n std::sort(v.begin(), v.end()); // आरोही क्रम में सॉर्ट करना\n auto it = std::find(v.begin(), v.end(), 8);\n if (it != v.end()) {\n std::cout << "मिला: " << *it << std::endl;\n }\n return 0;\n}\n\nस्ट्रिंग्स के साथ काम करना
\n\nक्लास std::string टेक्स्ट के साथ काम करने के लिए सुविधाजनक विधियाँ प्रदान करता है: खोज, प्रतिस्थापन, संयोजन, तुलना। C++17 में स्ट्रिंग्स के गैर-स्वामित्व वाले दृश्य के लिए std::string_view जोड़ा गया है।
#include