अनऑर्डरेड एसोसिएटिव कंटेनर (सी ++): Difference between revisions
(Created page with "{{Short description|Group of class templates in the C++ Standard Library}} {{C++ Standard Library}} प्रोग्रामिंग लैंग्वेज C++ मे...") |
No edit summary |
||
(12 intermediate revisions by 5 users not shown) | |||
Line 2: | Line 2: | ||
{{C++ Standard Library}} | {{C++ Standard Library}} | ||
प्रोग्रामिंग | प्रोग्रामिंग भाषा सी++ में, '''अनऑर्डरेड एसोसिएटिव कंटेनर सी ++''' मानक लाइब्रेरी में क्लास टेम्प्लेट का समूह है जो [[ हैश तालिका ]] के वेरिएंट को कार्यान्वित करता है। टेम्प्लेट के कारण उनका उपयोग आर्बिट्ररी तत्वों जैसे पूर्णांक अथवा कस्टम क्लासेज को संग्रहीत करने के लिए किया जा सकता है। निम्नलिखित कंटेनरों <code>unordered_set</code>, <code>unordered_map</code>, <code>unordered_multiset</code>, <code>unordered_multimap</code> को [[सी ++]] मानक के वर्तमान संशोधन में परिभाषित किया गया है। इनमें से प्रत्येक कंटेनर उनके एलिमेंट्स के कॉन्सट्रेन्ट्स पर भिन्न होता है। | ||
अनऑर्डरेड [[सहयोगी कंटेनर|एसोसिएटिव कंटेनर]] सी ++ मानक लाइब्रेरी में एसोसिएटिव कंटेनर के समतुल्य होते हैं किन्तु उनके कॉन्सट्रेन्ट्स भिन्न-भिन्न होते हैं। अनऑर्डरेड एसोसिएटिव कंटेनरों में एलिमेंट्स उचित रूप से क्रमबद्ध नहीं होते हैं। यह ऑब्जेक्ट्स को संग्रहित करने के लिए हैशिंग के उपयोग के कारण होता है। कंटेनरों को रेगुलर एसोसिएटिव कंटेनर की भाँति इटरेट किया जा सकता है। | |||
== इतिहास == | == इतिहास == | ||
सी ++ भाषा में हैश तालिका का प्रथम व्यापक रूप से उपयोग किया जाने वाला कार्यान्वयन [[सिलिकॉन ग्राफिक्स]] (एसजीआई) [[मानक टेम्पलेट लाइब्रेरी]] (एसटीएल) के <code>hash_map</code>, <code>hash_set</code>, <code>hash_multimap</code>, <code>hash_multiset</code> क्लास टेम्पलेट्स थे।<ref>{{cite web |url= http://www.sgi.com/tech/stl/hash_map.html |title=hash_map<Key, Data, HashFcn, EqualKey, Alloc> |publisher=[[Silicon Graphics]] (SGI) |access-date=26 January 2011}}</ref> उनकी उपयोगिता के कारण, उन्हें सी++ मानक लाइब्रेरी के विभिन्न अन्य कार्यान्वयनों (उदाहरण के लिए, [[जीएनयू संकलक संग्रह]] (जीसीसी) [[libstdc++]]<ref>{{cite web |url=https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/class____gnu__cxx_1_1hash__map.html |title=libstdc++: hash_map Class Template Reference |access-date=26 January 2011}}</ref> और [[ विजुअल सी ++ ]] (एमएसवीसी) मानक लाइब्रेरी) में सम्मिलित किया गया है। <code>hash_*</code> क्लास टेम्प्लेट [[सी ++ तकनीकी रिपोर्ट 1]] (सी++ टीआर1) में प्रस्तावित किए गए थे और <code>unordered_*</code> नामों के अंतर्गत स्वीकार किए गए थे।<ref>{{cite web |title=A Proposal to Add Hash Tables to the Standard Library (revision 4) |author=WG21 |date=9 April 2003 |url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1456.html |id=n1456}}</ref> जिसके पश्चात उन्हें सी++ मानक के [[C++11|सी++11]] संशोधन में सम्मिलित किया गया था।<ref name="n3126">{{citation|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3126.pdf |title=Working Draft, Standard for Programming Language C++ |author=WG21 |date=21 August 2010 |id=n3126}}</ref> बूस्ट [[सी ++ पुस्तकालयों को बढ़ावा दें|सी++ लाइब्रेरी]] में <code><boost/unordered_map.hpp></code> के रूप में भी यह उपलब्ध है। <ref>{{cite web |publisher=Boost |title=Class template unordered_map |url=http://www.boost.org/doc/libs/1_45_0/doc/html/boost/unordered_map.html |access-date=26 January 2011}}</ref> | |||
== | == फंक्शन्स का अवलोकन == | ||
कंटेनरों को | कंटेनरों को हेडर में डिफाइन किया जाता है, उदाहरण के लिए, <code>unordered_set</code> को हेडर <code><unordered_set></code> में डिफाइन किया गया है। सभी [http://www.sgi.com/tech/stl/Container.html कंटेनर] [[अवधारणा (जेनेरिक प्रोग्रामिंग)|कांसेप्ट]] (जेनेरिक प्रोग्रामिंग) की आवश्यकताओं को पूर्ण करते हैं, जिसका अर्थ है कि उनके निकट <code>begin()</code>, <code>end()</code>, <code>size()</code>, <code>max_size()</code>, <code>empty()</code>, और <code>swap()</code> विधियाँ होती हैं। | ||
{| class="wikitable" style="font-size:0.85em" | {| class="wikitable" style="font-size:0.85em" | ||
Line 22: | Line 22: | ||
! <code>unordered_multiset</code><br>(C++11) | ! <code>unordered_multiset</code><br>(C++11) | ||
! <code>unordered_multimap</code><br>(C++11) | ! <code>unordered_multimap</code><br>(C++11) | ||
! | ! विवरण | ||
|- | |- | ||
! rowspan=4 | | ! rowspan=4 | | ||
Line 29: | Line 29: | ||
| [http://en.cppreference.com/w/cpp/container/unordered_multiset/unordered_multiset (constructor)] | | [http://en.cppreference.com/w/cpp/container/unordered_multiset/unordered_multiset (constructor)] | ||
| [http://en.cppreference.com/w/cpp/container/unordered_multimap/unordered_multimap (constructor)] | | [http://en.cppreference.com/w/cpp/container/unordered_multimap/unordered_multimap (constructor)] | ||
| | | विभिन्न स्रोतों से कंटेनर का निर्माण करता है। | ||
|- | |- | ||
| [http://en.cppreference.com/w/cpp/container/unordered_set/~unordered_set (destructor)] | | [http://en.cppreference.com/w/cpp/container/unordered_set/~unordered_set (destructor)] | ||
Line 35: | Line 35: | ||
| [http://en.cppreference.com/w/cpp/container/unordered_multiset/~unordered_multiset (destructor)] | | [http://en.cppreference.com/w/cpp/container/unordered_multiset/~unordered_multiset (destructor)] | ||
| [http://en.cppreference.com/w/cpp/container/unordered_multimap/~unordered_multimap (destructor)] | | [http://en.cppreference.com/w/cpp/container/unordered_multimap/~unordered_multimap (destructor)] | ||
| | | सेट और निहित एलिमेंट्स को नष्ट कर देता है। | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/operator= operator=]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/operator= operator=]</code> | ||
Line 41: | Line 41: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/operator= operator=]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/operator= operator=]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/operator= operator=]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/operator= operator=]</code> | ||
| | | कंटेनर को वैल्यू असाइन करता है। | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/get_allocator get_allocator]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/get_allocator get_allocator]</code> | ||
Line 47: | Line 47: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/get_allocator get_allocator]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/get_allocator get_allocator]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/get_allocator get_allocator]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/get_allocator get_allocator]</code> | ||
| | | एलिमेंट्स को मेमोरी एलोकेट करने के लिए प्रयुक्त एलोकेटर रिटर्न करता है। | ||
|- | |- | ||
! rowspan=2 | | ! rowspan=2 | एलिमेंट एक्सेस | ||
| {{n/a}} | | {{n/a}} | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_map/at at]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_map/at at]</code> | ||
| {{n/a}} | | {{n/a}} | ||
| {{n/a}} | | {{n/a}} | ||
| | | बाउंड चेकिंग के साथ निर्दिष्ट एलिमेंट्स को एक्सेस करता है। | ||
|- | |- | ||
| {{n/a}} | | {{n/a}} | ||
Line 60: | Line 60: | ||
| {{n/a}} | | {{n/a}} | ||
| {{n/a}} | | {{n/a}} | ||
| | | बाउंड चेकिंग के अतिरिक्त निर्दिष्ट एलिमेंट्स को एक्सेस करता है। | ||
|- | |- | ||
! rowspan=2 | | ! rowspan=2 | इटरेटर | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/begin begin]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/begin begin]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_map/begin begin]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_map/begin begin]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/begin begin]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/begin begin]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/begin begin]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/begin begin]</code> | ||
| | | कंटेनर के प्रारम्भ में इटरेटर रिटर्न करता है। | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/end end]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/end end]</code> | ||
Line 73: | Line 73: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/end end]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/end end]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/end end]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/end end]</code> | ||
| | | कंटेनर के अंत में इटरेटर रिटर्न करता है। | ||
|- | |- | ||
! rowspan=3 | | ! rowspan=3 | क्षमता | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/empty empty]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/empty empty]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_map/empty empty]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_map/empty empty]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/empty empty]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/empty empty]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/empty empty]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/empty empty]</code> | ||
| | | चेक करता है कि क्या कंटेनर रिक्त है | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/size size]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/size size]</code> | ||
Line 86: | Line 86: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/size size]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/size size]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/size size]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/size size]</code> | ||
| | | कंटेनर में एलिमेंट्स की संख्या रिटर्न करता है। | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/max_size max_size]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/max_size max_size]</code> | ||
Line 92: | Line 92: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/max_size max_size]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/max_size max_size]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/max_size max_size]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/max_size max_size]</code> | ||
| | | कंटेनर में एलिमेंट्स की अधिकतम संभव संख्या रिटर्न करता है। | ||
|- | |- | ||
! rowspan=6 | | ! rowspan=6 | संशोधक | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/clear clear]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/clear clear]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_map/clear clear]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_map/clear clear]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/clear clear]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/clear clear]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/clear clear]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/clear clear]</code> | ||
| | | कंटेंट्स को क्लियर करता है। | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/insert insert]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/insert insert]</code> | ||
Line 105: | Line 105: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/insert insert]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/insert insert]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/insert insert]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/insert insert]</code> | ||
| | | एलिमेंट्स को इन्सर्ट करता है। | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/emplace emplace]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/emplace emplace]</code> | ||
Line 111: | Line 111: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/emplace emplace]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/emplace emplace]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/emplace emplace]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/emplace emplace]</code> | ||
| | | इन-प्लेस एलिमेंट्स का निर्माण करता है ([[C++11]]) | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/emplace_hint emplace_hint]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/emplace_hint emplace_hint]</code> | ||
Line 117: | Line 117: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/emplace_hint emplace_hint]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/emplace_hint emplace_hint]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/emplace_hint emplace_hint]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/emplace_hint emplace_hint]</code> | ||
| | | संकेत ([[C++11]]) का उपयोग करके इन-प्लेस एलिमेंट्स का निर्माण करता है | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/erase erase]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/erase erase]</code> | ||
Line 123: | Line 123: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/erase erase]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/erase erase]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/erase erase]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/erase erase]</code> | ||
| | | एलिमेंट्स को इरेज करता है। | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/swap swap]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/swap swap]</code> | ||
Line 129: | Line 129: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/swap swap]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/swap swap]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/swap swap]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/swap swap]</code> | ||
| | | कंटेंट्स को दूसरे कंटेनर से स्वैप करता है। | ||
|- | |- | ||
! rowspan=3 | | ! rowspan=3 | लुकउप | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/count count]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/count count]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_map/count count]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_map/count count]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/count count]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/count count]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/count count]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/count count]</code> | ||
| | | विशिष्ट कुंजी से युग्मित होने वाले एलिमेंट्स की संख्या रिटर्न करता है। | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/find find]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/find find]</code> | ||
Line 142: | Line 142: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/find find]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/find find]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/find find]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/find find]</code> | ||
| | | विशिष्ट कुंजी के साथ एलिमेंट को फाइंड करता है। | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/equal_range equal_range]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/equal_range equal_range]</code> | ||
Line 148: | Line 148: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/equal_range equal_range]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/equal_range equal_range]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/equal_range equal_range]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/equal_range equal_range]</code> | ||
| | | विशिष्ट कुंजी से युग्मित होने वाले एलिमेंट्स की श्रेणी रिटर्न करता है। | ||
|- | |- | ||
! rowspan=1 | | ! rowspan=1 | बकेट इंटरफ़ेस | ||
| colspan=5 | ... | | colspan=5 | ... | ||
|- | |- | ||
! rowspan=1 | | ! rowspan=1 | हैश नीति | ||
| colspan=5 | ... | | colspan=5 | ... | ||
|- | |- | ||
! rowspan=2 | | ! rowspan=2 | प्रेक्षक | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/hash_function hash_function]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/hash_function hash_function]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_map/hash_function hash_function]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_map/hash_function hash_function]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/hash_function hash_function]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/hash_function hash_function]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/hash_function hash_function]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/hash_function hash_function]</code> | ||
| | | कुंजी का हैश बनाने के लिए उपयोग किया गया फ़ंक्शन रिटर्न करता है। | ||
|- | |- | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_set/key_eq key_eq]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_set/key_eq key_eq]</code> | ||
Line 167: | Line 167: | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/key_eq key_eq]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multiset/key_eq key_eq]</code> | ||
| <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/key_eq key_eq]</code> | | <code>[http://en.cppreference.com/w/cpp/container/unordered_multimap/key_eq key_eq]</code> | ||
| | | की कम्पेरिज़न फ़ंक्शन रिटर्न करता है। | ||
|} | |} | ||
Line 202: | Line 202: | ||
== कस्टम हैश फ़ंक्शंस == | == कस्टम हैश फ़ंक्शंस == | ||
Std :: unordered_map में कस्टम ऑब्जेक्ट्स का उपयोग करने के लिए, कस्टम हैश फ़ंक्शन को परिभाषित किया जाना चाहिए। यह फ़ंक्शन कस्टम प्रकार का कॉन्स्ट | Std :: unordered_map में कस्टम ऑब्जेक्ट्स का उपयोग करने के लिए, कस्टम हैश फ़ंक्शन को परिभाषित किया जाना चाहिए। यह फ़ंक्शन कस्टम प्रकार का कॉन्स्ट रिफरेन्स लेता है और size_t रिटर्न करता है। | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
#include <unordered_map> | #include <unordered_map> | ||
Line 214: | Line 214: | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
यूजर फंक्शन डिफाइन करता है जिसका उपयोग std :: unordered_map में टेम्पलेट पैरामीटर के रूप में पास करके किया जा सकता है | |||
<syntaxhighlight lang="cpp"> std::unordered_map<X,int,hash_X> my_map;</syntaxhighlight> | |||
या | या std::hash फ़ंक्शन को डिफ़ॉल्ट हैश फ़ंक्शन के रूप में सेट किया जा सकता है | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
namespace std { | namespace std { | ||
Line 237: | Line 237: | ||
{{use dmy dates|date=January 2012}} | {{use dmy dates|date=January 2012}} | ||
[[Category:Articles with invalid date parameter in template]] | |||
[[Category:C++ कोड उदाहरण के साथ लेख]] | |||
[[Category: | |||
[[Category:Created On 13/05/2023]] | [[Category:Created On 13/05/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Use dmy dates from January 2012]] | |||
[[Category:सी ++ मानक पुस्तकालय]] |
Latest revision as of 16:09, 30 October 2023
C++ Standard Library |
---|
Containers |
C standard library |
प्रोग्रामिंग भाषा सी++ में, अनऑर्डरेड एसोसिएटिव कंटेनर सी ++ मानक लाइब्रेरी में क्लास टेम्प्लेट का समूह है जो हैश तालिका के वेरिएंट को कार्यान्वित करता है। टेम्प्लेट के कारण उनका उपयोग आर्बिट्ररी तत्वों जैसे पूर्णांक अथवा कस्टम क्लासेज को संग्रहीत करने के लिए किया जा सकता है। निम्नलिखित कंटेनरों unordered_set
, unordered_map
, unordered_multiset
, unordered_multimap
को सी ++ मानक के वर्तमान संशोधन में परिभाषित किया गया है। इनमें से प्रत्येक कंटेनर उनके एलिमेंट्स के कॉन्सट्रेन्ट्स पर भिन्न होता है।
अनऑर्डरेड एसोसिएटिव कंटेनर सी ++ मानक लाइब्रेरी में एसोसिएटिव कंटेनर के समतुल्य होते हैं किन्तु उनके कॉन्सट्रेन्ट्स भिन्न-भिन्न होते हैं। अनऑर्डरेड एसोसिएटिव कंटेनरों में एलिमेंट्स उचित रूप से क्रमबद्ध नहीं होते हैं। यह ऑब्जेक्ट्स को संग्रहित करने के लिए हैशिंग के उपयोग के कारण होता है। कंटेनरों को रेगुलर एसोसिएटिव कंटेनर की भाँति इटरेट किया जा सकता है।
इतिहास
सी ++ भाषा में हैश तालिका का प्रथम व्यापक रूप से उपयोग किया जाने वाला कार्यान्वयन सिलिकॉन ग्राफिक्स (एसजीआई) मानक टेम्पलेट लाइब्रेरी (एसटीएल) के hash_map
, hash_set
, hash_multimap
, hash_multiset
क्लास टेम्पलेट्स थे।[1] उनकी उपयोगिता के कारण, उन्हें सी++ मानक लाइब्रेरी के विभिन्न अन्य कार्यान्वयनों (उदाहरण के लिए, जीएनयू संकलक संग्रह (जीसीसी) libstdc++[2] और विजुअल सी ++ (एमएसवीसी) मानक लाइब्रेरी) में सम्मिलित किया गया है। hash_*
क्लास टेम्प्लेट सी ++ तकनीकी रिपोर्ट 1 (सी++ टीआर1) में प्रस्तावित किए गए थे और unordered_*
नामों के अंतर्गत स्वीकार किए गए थे।[3] जिसके पश्चात उन्हें सी++ मानक के सी++11 संशोधन में सम्मिलित किया गया था।[4] बूस्ट सी++ लाइब्रेरी में <boost/unordered_map.hpp>
के रूप में भी यह उपलब्ध है। [5]
फंक्शन्स का अवलोकन
कंटेनरों को हेडर में डिफाइन किया जाता है, उदाहरण के लिए, unordered_set
को हेडर <unordered_set>
में डिफाइन किया गया है। सभी कंटेनर कांसेप्ट (जेनेरिक प्रोग्रामिंग) की आवश्यकताओं को पूर्ण करते हैं, जिसका अर्थ है कि उनके निकट begin()
, end()
, size()
, max_size()
, empty()
, और swap()
विधियाँ होती हैं।
unordered_set (C++11) |
unordered_map (C++11) |
unordered_multiset (C++11) |
unordered_multimap (C++11) |
विवरण | |
---|---|---|---|---|---|
(constructor) | (constructor) | (constructor) | (constructor) | विभिन्न स्रोतों से कंटेनर का निर्माण करता है। | |
(destructor) | (destructor) | (destructor) | (destructor) | सेट और निहित एलिमेंट्स को नष्ट कर देता है। | |
operator=
|
operator=
|
operator=
|
operator=
|
कंटेनर को वैल्यू असाइन करता है। | |
get_allocator
|
get_allocator
|
get_allocator
|
get_allocator
|
एलिमेंट्स को मेमोरी एलोकेट करने के लिए प्रयुक्त एलोकेटर रिटर्न करता है। | |
एलिमेंट एक्सेस | — | at
|
— | — | बाउंड चेकिंग के साथ निर्दिष्ट एलिमेंट्स को एक्सेस करता है। |
— | operator[]
|
— | — | बाउंड चेकिंग के अतिरिक्त निर्दिष्ट एलिमेंट्स को एक्सेस करता है। | |
इटरेटर | begin
|
begin
|
begin
|
begin
|
कंटेनर के प्रारम्भ में इटरेटर रिटर्न करता है। |
end
|
end
|
end
|
end
|
कंटेनर के अंत में इटरेटर रिटर्न करता है। | |
क्षमता | empty
|
empty
|
empty
|
empty
|
चेक करता है कि क्या कंटेनर रिक्त है |
size
|
size
|
size
|
size
|
कंटेनर में एलिमेंट्स की संख्या रिटर्न करता है। | |
max_size
|
max_size
|
max_size
|
max_size
|
कंटेनर में एलिमेंट्स की अधिकतम संभव संख्या रिटर्न करता है। | |
संशोधक | clear
|
clear
|
clear
|
clear
|
कंटेंट्स को क्लियर करता है। |
insert
|
insert
|
insert
|
insert
|
एलिमेंट्स को इन्सर्ट करता है। | |
emplace
|
emplace
|
emplace
|
emplace
|
इन-प्लेस एलिमेंट्स का निर्माण करता है (C++11) | |
emplace_hint
|
emplace_hint
|
emplace_hint
|
emplace_hint
|
संकेत (C++11) का उपयोग करके इन-प्लेस एलिमेंट्स का निर्माण करता है | |
erase
|
erase
|
erase
|
erase
|
एलिमेंट्स को इरेज करता है। | |
swap
|
swap
|
swap
|
swap
|
कंटेंट्स को दूसरे कंटेनर से स्वैप करता है। | |
लुकउप | count
|
count
|
count
|
count
|
विशिष्ट कुंजी से युग्मित होने वाले एलिमेंट्स की संख्या रिटर्न करता है। |
find
|
find
|
find
|
find
|
विशिष्ट कुंजी के साथ एलिमेंट को फाइंड करता है। | |
equal_range
|
equal_range
|
equal_range
|
equal_range
|
विशिष्ट कुंजी से युग्मित होने वाले एलिमेंट्स की श्रेणी रिटर्न करता है। | |
बकेट इंटरफ़ेस | ... | ||||
हैश नीति | ... | ||||
प्रेक्षक | hash_function
|
hash_function
|
hash_function
|
hash_function
|
कुंजी का हैश बनाने के लिए उपयोग किया गया फ़ंक्शन रिटर्न करता है। |
key_eq
|
key_eq
|
key_eq
|
key_eq
|
की कम्पेरिज़न फ़ंक्शन रिटर्न करता है। |
उपयोग उदाहरण
#include <iostream>
#include <string>
#include <unordered_map>
int main()
{
std::unordered_map<std::string, int> months;
months["january"] = 31;
months["february"] = 28;
months["march"] = 31;
months["april"] = 30;
months["may"] = 31;
months["june"] = 30;
months["july"] = 31;
months["august"] = 31;
months["september"] = 30;
months["october"] = 31;
months["november"] = 30;
months["december"] = 31;
std::cout << "september -> " << months["september"] << std::endl;
std::cout << "april -> " << months["april"] << std::endl;
std::cout << "december -> " << months["december"] << std::endl;
std::cout << "february -> " << months["february"] << std::endl;
return 0;
}
कस्टम हैश फ़ंक्शंस
Std :: unordered_map में कस्टम ऑब्जेक्ट्स का उपयोग करने के लिए, कस्टम हैश फ़ंक्शन को परिभाषित किया जाना चाहिए। यह फ़ंक्शन कस्टम प्रकार का कॉन्स्ट रिफरेन्स लेता है और size_t रिटर्न करता है।
#include <unordered_map>
struct X{int i,j,k;};
struct hash_X{
size_t operator()(const X &x) const{
return std::hash<int>()(x.i) ^ std::hash<int>()(x.j) ^ std::hash<int>()(x.k);
}
};
यूजर फंक्शन डिफाइन करता है जिसका उपयोग std :: unordered_map में टेम्पलेट पैरामीटर के रूप में पास करके किया जा सकता है
std::unordered_map<X,int,hash_X> my_map;
या std::hash फ़ंक्शन को डिफ़ॉल्ट हैश फ़ंक्शन के रूप में सेट किया जा सकता है
namespace std {
template <>
class hash<X>{
public :
size_t operator()(const X &x ) const{
return hash<int>()(x.i) ^ hash<int>()(x.j) ^ hash<int>()(x.k);
}
};
}
//...
std::unordered_map<X,int> my_map;
संदर्भ
- ↑ "hash_map<Key, Data, HashFcn, EqualKey, Alloc>". Silicon Graphics (SGI). Retrieved 26 January 2011.
- ↑ "libstdc++: hash_map Class Template Reference". Retrieved 26 January 2011.
- ↑ WG21 (9 April 2003). "A Proposal to Add Hash Tables to the Standard Library (revision 4)". n1456.
- ↑ WG21 (21 August 2010), Working Draft, Standard for Programming Language C++ (PDF), n3126
- ↑ "Class template unordered_map". Boost. Retrieved 26 January 2011.