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

प्रोग्रामिंग भाषा C++ में, अनऑर्डरेड एसोसिएटिव कंटेनर सी ++ मानक पुस्तकालय में क्लास टेम्प्लेट का समूह है जो हैश तालिका  वेरिएंट को कार्यान्वित करता है। टेम्प्लेट के कारण उनका उपयोग आर्बिट्ररी एलिमेंट्स जैसे पूर्णांक अथवा कस्टम क्लासेज को संग्रहीत करने के लिए किया जा सकता है। निम्नलिखित कंटेनरों ,  ,  ,   को सी ++ मानक के वर्तमान संशोधन में परिभाषित किया गया है। इनमें से प्रत्येक कंटेनर मात्र उनके एलिमेंट्स के कॉन्सट्रेन्ट्स पर भिन्न होता है।

अनऑर्डरेड एसोसिएटिव कंटेनर सी ++ मानक पुस्तकालय में एसोसिएटिव कंटेनर के समतुल्य होते हैं किन्तु उनके कॉन्सट्रेन्ट्स भिन्न-भिन्न होते हैं। अनऑर्डरेड एसोसिएटिव कंटेनरों में एलिमेंट्स उचित रूप से क्रमबद्ध नहीं होते हैं। यह ऑब्जेक्ट्स को स्टोर करने के लिए हैशिंग के उपयोग के कारण होता है। कंटेनरों को अभी भी रेगुलर एसोसिएटिव कंटेनर की भाँति इटरेट किया जा सकता है।

इतिहास
सी ++ भाषा में हैश टेबल का पहला व्यापक रूप से उपयोग किया जाने वाला कार्यान्वयन सिलिकॉन ग्राफिक्स (एसजीआई) मानक टेम्पलेट लाइब्रेरी (एसटीएल) के,  ,  ,   क्लास टेम्पलेट्स थे। सिलिकॉन ग्राफिक्स (SGI) स्टैण्डर्ड टेम्पलेट लाइब्रेरी (STL) के क्लास टेम्प्लेट। उनकी उपयोगिता के कारण, उन्हें बाद में C++ मानक लाइब्रेरी के कई अन्य कार्यान्वयनों में शामिल किया गया (उदाहरण के लिए, जीएनयू संकलक संग्रह (GCC) libstdc++ और  विजुअल सी ++  (एमएसवीसी) मानक पुस्तकालय)।   e> क्लास टेम्प्लेट सी ++ तकनीकी रिपोर्ट 1 (C++ TR1) में प्रस्तावित किए गए थे और नामों के तहत स्वीकार किए गए थे. बाद में, उन्हें C++ मानक के C++11 संशोधन में शामिल किया गया। बूस्ट सी ++ पुस्तकालयों को बढ़ावा दें में एक कार्यान्वयन भी उपलब्ध है.

कार्यों का अवलोकन
कंटेनरों को कंटेनरों के नाम के शीर्षकों में परिभाषित किया जाता है, उदाहरण के लिए,  शीर्षलेख में परिभाषित किया गया है. सभी कंटेनर कंटेनर अवधारणा (जेनेरिक प्रोग्रामिंग) की आवश्यकताओं को पूरा करते हैं, जिसका अर्थ है कि उनके पास है,  ,  ,  ,  , और   तरीके।

कस्टम हैश फ़ंक्शंस
Std :: unordered_map में कस्टम ऑब्जेक्ट्स का उपयोग करने के लिए, कस्टम हैश फ़ंक्शन को परिभाषित किया जाना चाहिए। यह फ़ंक्शन कस्टम प्रकार का कॉन्स्ट संदर्भ लेता है और size_t देता है उपयोगकर्ता परिभाषित फ़ंक्शन का उपयोग std :: unordered_map में किया जा सकता है, इसे टेम्पलेट पैरामीटर के रूप में पास करके या एसटीडी :: हैश फ़ंक्शन को विशेषज्ञता के द्वारा डिफ़ॉल्ट हैश फ़ंक्शन के रूप में सेट किया जा सकता है