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

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

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

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

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

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