अनऑर्डरेड एसोसिएटिव कंटेनर (सी ++): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(8 intermediate revisions by 4 users not shown)
Line 2: Line 2:
{{C++ Standard Library}}
{{C++ Standard Library}}


प्रोग्रामिंग भाषा C++ में, अनऑर्डरेड एसोसिएटिव कंटेनर [[सी ++ मानक पुस्तकालय]] में क्लास टेम्प्लेट का समूह है जो [[ हैश तालिका ]] वेरिएंट को कार्यान्वित करता है। टेम्प्लेट के कारण उनका उपयोग आर्बिट्ररी एलिमेंट्स जैसे पूर्णांक अथवा कस्टम क्लासेज को संग्रहीत करने के लिए किया जा सकता है। निम्नलिखित कंटेनरों <code>unordered_set</code>, <code>unordered_map</code>, <code>unordered_multiset</code>, <code>unordered_multimap</code> को [[सी ++]] मानक के वर्तमान संशोधन में परिभाषित किया गया है। इनमें से प्रत्येक कंटेनर मात्र उनके एलिमेंट्स के कॉन्सट्रेन्ट्स पर भिन्न होता है।
प्रोग्रामिंग भाषा सी++ में, '''अनऑर्डरेड एसोसिएटिव कंटेनर सी ++''' मानक लाइब्रेरी में क्लास टेम्प्लेट का समूह है जो [[ हैश तालिका ]] के वेरिएंट को कार्यान्वित करता है। टेम्प्लेट के कारण उनका उपयोग आर्बिट्ररी तत्वों जैसे पूर्णांक अथवा कस्टम क्लासेज को संग्रहीत करने के लिए किया जा सकता है। निम्नलिखित कंटेनरों <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> उनकी उपयोगिता के कारण, उन्हें C++ मानक लाइब्रेरी के विभिन्न अन्य कार्यान्वयनों (उदाहरण के लिए, [[जीएनयू संकलक संग्रह]] (जीसीसी) [[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]] (C++ TR1) में प्रस्तावित किए गए थे और <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++ मानक के [[C++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>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> तरीके।
कंटेनरों को हेडर में डिफाइन किया जाता है, उदाहरण के लिए, <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)
! Description
! विवरण
|-
|-
! 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)]
| Constructs the container from variety of sources
| विभिन्न स्रोतों से कंटेनर का निर्माण करता है।
|-
|-
| [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)]
| Destructs the set and the contained elements
| सेट और निहित एलिमेंट्स को नष्ट कर देता है।
|-
|-
| <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>
| Assigns values to the container
| कंटेनर को वैल्यू असाइन करता है।
|-
|-
| <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>
| Returns the allocator used to allocate memory for the elements
| एलिमेंट्स को मेमोरी एलोकेट करने के लिए प्रयुक्त एलोकेटर रिटर्न करता है।
|-
|-
! rowspan=2 | Element access
! 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}}
| Accesses specified element with bounds checking.
| बाउंड चेकिंग के साथ निर्दिष्ट एलिमेंट्स को एक्सेस करता है।
|-
|-
| {{n/a}}
| {{n/a}}
Line 60: Line 60:
| {{n/a}}
| {{n/a}}
| {{n/a}}
| {{n/a}}
| Accesses specified element without bounds checking.
| बाउंड चेकिंग के अतिरिक्त निर्दिष्ट एलिमेंट्स को एक्सेस करता है।
|-
|-
! rowspan=2 | Iterators
! 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>
| Returns an iterator to the beginning of the container
| कंटेनर के प्रारम्भ में इटरेटर रिटर्न करता है।
|-
|-
| <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>
| Returns an iterator to the end of the container
| कंटेनर के अंत में इटरेटर रिटर्न करता है।
|-
|-
! rowspan=3 | Capacity
! 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>
| Checks whether the container is empty
| चेक करता है कि क्या कंटेनर रिक्त है
|-
|-
| <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>
| Returns number of elements in the container.
| कंटेनर में एलिमेंट्स की संख्या रिटर्न करता है।
|-
|-
| <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>
| Returns the maximum possible number of elements in the container
| कंटेनर में एलिमेंट्स की अधिकतम संभव संख्या रिटर्न करता है।
|-
|-
! rowspan=6 | Modifiers
! 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>
| Clears the contents.
| कंटेंट्स को क्लियर करता है।
|-
|-
| <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>
Inserts elements.
एलिमेंट्स को इन्सर्ट करता है।
|-
|-
| <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>
| Constructs elements in-place ([[C++11]])
| इन-प्लेस एलिमेंट्स का निर्माण करता है ([[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>
| Constructs elements in-place using a hint ([[C++11]])
| संकेत ([[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>
| Erases elements.
| एलिमेंट्स को इरेज करता है।
|-
|-
| <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>
| Swaps the contents with another container.
| कंटेंट्स को दूसरे कंटेनर से स्वैप करता है।
|-
|-
! rowspan=3 | Lookup
! 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>
| Returns the number of elements matching specific key.
| विशिष्ट कुंजी से युग्मित होने वाले एलिमेंट्स की संख्या रिटर्न करता है।
|-
|-
| <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>
| Finds an element with specific key.
| विशिष्ट कुंजी के साथ एलिमेंट को फाइंड करता है।
|-
|-
| <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>
| Returns a range of elements matching specific key.
| विशिष्ट कुंजी से युग्मित होने वाले एलिमेंट्स की श्रेणी रिटर्न करता है।
|-
|-
! rowspan=1 | Bucket interface
! rowspan=1 | बकेट इंटरफ़ेस
| colspan=5 | ...
| colspan=5 | ...
|-
|-
! rowspan=1 | Hash policy
! rowspan=1 | हैश नीति
| colspan=5 | ...
| colspan=5 | ...
|-
|-
! rowspan=2 | Observers
! 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>
| Returns the function used to create hash of a key
| कुंजी का हैश बनाने के लिए उपयोग किया गया फ़ंक्शन रिटर्न करता है।
|-
|-
| <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>
| Returns key comparison function.
| की कम्पेरिज़न फ़ंक्शन रिटर्न करता है।
|}
|}


Line 202: Line 202:


== कस्टम हैश फ़ंक्शंस ==
== कस्टम हैश फ़ंक्शंस ==
Std :: unordered_map में कस्टम ऑब्जेक्ट्स का उपयोग करने के लिए, कस्टम हैश फ़ंक्शन को परिभाषित किया जाना चाहिए। यह फ़ंक्शन कस्टम प्रकार का कॉन्स्ट संदर्भ लेता है और size_t देता है
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 में किया जा सकता है, इसे टेम्पलेट पैरामीटर के रूप में पास करके
यूजर फंक्शन डिफाइन करता है जिसका उपयोग std :: unordered_map में टेम्पलेट पैरामीटर के रूप में पास करके किया जा सकता है
<syntaxhighlight lang="cpp"> std::unordered_map<X,int,hash_X> my_map;</syntaxhighlight>
<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: C++ कोड उदाहरण के साथ लेख]] [[Category: सी ++ मानक पुस्तकालय]]


 
[[Category:Articles with invalid date parameter in template]]
 
[[Category:C++ कोड उदाहरण के साथ लेख]]
[[Category: Machine Translated Page]]
[[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

प्रोग्रामिंग भाषा सी++ में, अनऑर्डरेड एसोसिएटिव कंटेनर सी ++ मानक लाइब्रेरी में क्लास टेम्प्लेट का समूह है जो हैश तालिका के वेरिएंट को कार्यान्वित करता है। टेम्प्लेट के कारण उनका उपयोग आर्बिट्ररी तत्वों जैसे पूर्णांक अथवा कस्टम क्लासेज को संग्रहीत करने के लिए किया जा सकता है। निम्नलिखित कंटेनरों 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;


संदर्भ

  1. "hash_map<Key, Data, HashFcn, EqualKey, Alloc>". Silicon Graphics (SGI). Retrieved 26 January 2011.
  2. "libstdc++: hash_map Class Template Reference". Retrieved 26 January 2011.
  3. WG21 (9 April 2003). "A Proposal to Add Hash Tables to the Standard Library (revision 4)". n1456.
  4. WG21 (21 August 2010), Working Draft, Standard for Programming Language C++ (PDF), n3126
  5. "Class template unordered_map". Boost. Retrieved 26 January 2011.