के लिए एक कॉन्स कुंजी का उपयोग करना मैं std :: map से std :: unordered_map पर अपना कोड स्विच कर रहा हूं जहां उचित हो।unordered_map
std::map<const std::string, int>
सच कहूं, मैं अगर यह स्थिरांक किसी भी मूल्य का था कभी नहीं की जाँच: std :: नक्शे के साथ, मैं आम तौर पर सिर्फ निम्नलिखित यकीन है कि कुंजी बदला नहीं जा सकता बनाने के लिए लिखें। यह हमेशा संकलित और जी ++ के साथ काम किया है।
अब, std :: unordered_map के साथ, निम्नलिखित g ++ 4.5.1 से लिंक करने में विफल रहता है।
std::unordered_map<const std::string, std::string> m;
m["foo"] = "bar";
इस लिंक त्रुटि के साथ
:
Undefined symbols:
"std::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const>::operator()(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const"
, referenced from:
ठीक, सरल है स्थिरांक दूर करने के लिए है, लेकिन उस के अलावा, वहाँ साहचर्य कंटेनर क्लासों एक स्थिरांक उपयोग करने के लिए से किसी के साथ एसटीएल में भी एक मुद्दा है मुख्य प्रकार से? क्या कोई तरीका नहीं है जो आपको किसी भी सहयोगी प्रकार के लिए कुंजी का संदर्भ प्राप्त करने देता है?
या दूसरे शब्दों में: 'std :: unordered_map वह वही करेगा जो वह चाहता है। (जोनाथन कहते हैं, सबसे ज्यादा स्पष्ट करने के लिए।) –
हे, हाँ, मैं देख सकता हूं कि मेरे उत्तर को मूल प्रश्न को समझने के लिए कैसे आवश्यक है :) – MSN