अनऑर्डरेड एसोसिएटिव कंटेनर (सी ++): Difference between revisions
No edit summary |
No edit summary |
||
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 49: | Line 49: | ||
| एलिमेंट्स को मेमोरी एलोकेट करने के लिए प्रयुक्त एलोकेटर रिटर्न करता है। | | एलिमेंट्स को मेमोरी एलोकेट करने के लिए प्रयुक्त एलोकेटर रिटर्न करता है। | ||
|- | |- | ||
! 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> | ||
Line 62: | Line 62: | ||
| बाउंड चेकिंग के अतिरिक्त निर्दिष्ट एलिमेंट्स को एक्सेस करता है। | | बाउंड चेकिंग के अतिरिक्त निर्दिष्ट एलिमेंट्स को एक्सेस करता है। | ||
|- | |- | ||
! 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> | ||
Line 75: | Line 75: | ||
| कंटेनर के अंत में इटरेटर रिटर्न करता है। | | कंटेनर के अंत में इटरेटर रिटर्न करता है। | ||
|- | |- | ||
! 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> | ||
Line 94: | Line 94: | ||
| कंटेनर में एलिमेंट्स की अधिकतम संभव संख्या रिटर्न करता है। | | कंटेनर में एलिमेंट्स की अधिकतम संभव संख्या रिटर्न करता है। | ||
|- | |- | ||
! 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> | ||
Line 131: | Line 131: | ||
| कंटेंट्स को दूसरे कंटेनर से स्वैप करता है। | | कंटेंट्स को दूसरे कंटेनर से स्वैप करता है। | ||
|- | |- | ||
! 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> | ||
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> |
Revision as of 15:55, 18 May 2023
C++ Standard Library |
---|
Containers |
C standard library |
प्रोग्रामिंग भाषा C++ में, अनऑर्डरेड एसोसिएटिव कंटेनर C ++ मानक पुस्तकालय में क्लास टेम्प्लेट का समूह है जो हैश तालिका वेरिएंट को कार्यान्वित करता है। टेम्प्लेट के कारण उनका उपयोग आर्बिट्ररी एलिमेंट्स जैसे पूर्णांक अथवा कस्टम क्लासेज को संग्रहीत करने के लिए किया जा सकता है। निम्नलिखित कंटेनरों unordered_set
, unordered_map
, unordered_multiset
, unordered_multimap
को C ++ मानक के वर्तमान संशोधन में परिभाषित किया गया है। इनमें से प्रत्येक कंटेनर मात्र उनके एलिमेंट्स के कॉन्सट्रेन्ट्स पर भिन्न होता है।
अनऑर्डरेड एसोसिएटिव कंटेनर सी ++ मानक पुस्तकालय में एसोसिएटिव कंटेनर के समतुल्य होते हैं किन्तु उनके कॉन्सट्रेन्ट्स भिन्न-भिन्न होते हैं। अनऑर्डरेड एसोसिएटिव कंटेनरों में एलिमेंट्स उचित रूप से क्रमबद्ध नहीं होते हैं। यह ऑब्जेक्ट्स को स्टोर करने के लिए हैशिंग के उपयोग के कारण होता है। कंटेनरों को अभी भी रेगुलर एसोसिएटिव कंटेनर की भाँति इटरेट किया जा सकता है।
इतिहास
सी ++ भाषा में हैश टेबल का प्रथम व्यापक रूप से उपयोग किया जाने वाला कार्यान्वयन सिलिकॉन ग्राफिक्स (एसजीआई) स्टैण्डर्ड टेम्पलेट लाइब्रेरी (एसटीएल) के hash_map
, hash_set
, hash_multimap
, hash_multiset
क्लास टेम्पलेट्स थे।[1] उनकी उपयोगिता के कारण, उन्हें C++ मानक लाइब्रेरी के विभिन्न अन्य कार्यान्वयनों (उदाहरण के लिए, जीएनयू संकलक संग्रह (जीसीसी) libstdc++[2] और विजुअल सी ++ (एमएसवीसी) मानक लाइब्रेरी) में सम्मिलित किया गया है। hash_*
क्लास टेम्प्लेट C ++ तकनीकी रिपोर्ट 1 (C++ TR1) में प्रस्तावित किए गए थे और unordered_*
नामों के अंतर्गत स्वीकार किए गए थे।[3] जिसके पश्चात उन्हें C++ मानक के C++11 संशोधन में सम्मिलित किया गया था।[4] बूस्ट C++ लाइब्रेरी में <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
|
Constructs elements in-place (C++11) | |
emplace_hint
|
emplace_hint
|
emplace_hint
|
emplace_hint
|
Constructs elements in-place using a 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
|
Returns key comparison function. |
उपयोग उदाहरण
#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.