/ / ऑपरेटर [] बढ़ावा देने में :: unordered_map - c ++, बढ़ावा, ऑपरेटर-कीवर्ड, लुकअप, अनऑर्डरित-मैप

ऑपरेटर [] में बढ़ावा :: unordered_map - c ++, boost, operator-keyword, lookup, unordered-map

इसलिए, मैं बढ़ावा देने के लिए डॉक्यूमेंटेशन के माध्यम से पढ़ रहा था :: निम्नलिखित url पर unordered_map:

http://www.boost.org/doc/libs/1_52_0/doc/html/boost/unordered_map.html#id1395195-bb

और यह कहता है कि ऑपरेटर के प्रभाव [और] हैं

प्रभाव: यदि कंटेनर में पहले से ही k के बराबर एक तत्व नहीं है, तो मान std सम्मिलित करता है :: जोड़ा (k, mapped_type ())

यह दिखाता है: X.second का संदर्भ जहां x पहले से ही कंटेनर में मौजूद तत्व है, या k के बराबर एक कुंजी के साथ नया सम्मिलित तत्व है

जब मैं निम्नलिखित कोड चलाता हूं, तो यह पता चलता है कि मैप का पॉइंटर ["xyz"] 0. मैं क्या याद कर रहा हूं? मैं बहुत से लोगों को खोज (key_value) का उपयोग करते हुए देखता हूं, लेकिन यह सुनिश्चित नहीं है कि यह कैसे काम करता है।

#import <iostream>
#import <boost/unordered_map.hpp>

class myClass
{
public:
myClass():_i(-1){};
myClass(int i):_i(i){};
int _i;
};

int main()
{
boost::unordered_map<std::string,myClass*> map;
map["abc"] = new myClass(1);
std::cout << map["abc"] << std::endl;
std::cout << map["xyz"] << std::endl;
return 0;
}

उत्तर:

उत्तर № 1 के लिए 4

मेरे उत्तर को पोस्ट से उत्तर की ओर ले जाना जैसा कि याक ने सुझाव दिया था।

इसलिए, मैंने अपनी समस्या को हल किया और यह पता लगाया कि दूसरों को मेरे अनुभव से लाभ हो सकता है या कुछ टिप्पणियां हैं इसलिए मैं अभी भी पोस्ट कर रहा हूं।

मुझे लगता है कि यह क्या हो रहा था कि यह मेरे नक्शे में एक नया तत्व पैदा कर रहा था, बस rhs एक myClass * था। मैंने इसे फिर से लिखा है

class myClass
{
public:
myClass():_i(-1){};
myClass(int i):_i(i){};
int _i;

friend std::ostream& operator<< (std::ostream& stream, const myClass& myClass){return stream << "[" << myClass._i << "]";}
};

int main()
{
boost::unordered_map<std::string,myClass> map;
map["abc"] = myClass(1);
std::cout << map["abc"] << std::endl;
std::cout << map["xyz"] << std::endl;
return 0;
}

और यहाँ मेरा उत्पादन है:

$ g++ test.cpp && ./a.out
[1]
[-1]

उम्मीद है कि यह किसी की जरूरत में मदद करता है।