2010-09-14 14 views
9

मुझे कुंजी मान प्रारूप में तारों को स्टोर करने की आवश्यकता है। तो नीचे मानचित्र का उपयोग कर रहा हूँ।मानचित्र <स्ट्रिंग, स्ट्रिंग> इस मानचित्र में डेटा कैसे सम्मिलित करें?

#include<map> 
using namespace std; 
int main() 
{ 
    map<string, string> m; 
    string s1 = "1"; 
    string v1 = "A"; 

    m.insert(pair<string, string>(s1, v1)); //Error 
} 

Am डालने लाइन

त्रुटि C2784 में त्रुटि नीचे हो रही: 'bool std :: ऑपरेटर < (स्थिरांक std :: _ ट्री < _Traits> &, स्थिरांक std :: _ ट्री < _Traits> &) ': के लिए टेम्पलेट तर्क अनुमान नहीं कर सकता' स्थिरांक std :: _ ट्री < _Traits> & स्थिरांक std :: स्ट्रिंग '' से '

मैंने make_pair फ़ंक्शन को भी नीचे की तरह करने की कोशिश की, लेकिन वह भी एक ही त्रुटि की रिपोर्ट करता है।

m.insert(make_pair(s1, v1)); 

Pls मुझे बताएं कि क्या गलत है और उपर्युक्त समस्या का समाधान क्या है। ऊपर समस्या को हल करने के बाद, मैं नीचे की तरह का उपयोग कुंजी के आधार पर मान प्राप्त करने के लिए कर सकते हैं

m.find(s1); 

उत्तर

31

मुझे लगता है कि आप कहीं #include <string> याद करते हैं।

+0

इसने कोड संकलित किया। लेकिन मुझे आश्चर्य है कि मैंने स्ट्रिंग एस 1 = "1" कहने पर त्रुटि क्यों नहीं दी; केवल कॉलिंग डालने पर यह त्रुटि देता है। – bjskishore123

+0

@ bjskishore123: शायद आपके पास एक और वर्ग है जिसका नाम 'स्ट्रिंग' है जो किसी भी तरह से 'std :: string' के साथ टकराता है? – ereOn

+2

@ereOn - या शायद यह एकमात्र कंपाइलर त्रुटि नहीं है –

2

m[s1] = v1; बजाय का प्रयास करें।

+0

यह भी वही त्रुटि देता है। – bjskishore123

+0

और यह आपको यह बताने का कोई तरीका नहीं देता है कि आपने कोई नया नोड डाला है या एक पूर्व-मौजूदा अपडेट किया है। –

4

आप इस कोशिश कर सकते हैं:

#include<string> 

ऐसा लगता है संकलक तार तुलना करने के लिए कैसे पता नहीं है। हो सकता है कि वह स्ट्रिंग्स के बारे में अभी तक पर्याप्त जानकारी न दे, लेकिन एटीएम को समझने के लिए आपके map पर बहुत ध्यान केंद्रित किया गया है।

+0

ओह, दिलचस्प! संकलक * वह * है? ठीक है, मैं उस पर सहमत हो सकता हूं। :) - बस हमारी मां प्रकृति और मिल्कीवे गैलेक्सी की तरह (संस्कृत में: शि-शू-मा-आरए = शे-डॉल्फ़िन)। –

1

मुझे लगता है कि इसे इस तथ्य के साथ करना है कि <map> में <string>, लेकिन शामिल नहीं है। जब आप मानचित्र में तत्व जोड़ रहे हैं तो इसे क्रमबद्ध करके मानचित्र में सही स्थिति ढूंढनी होगी। सॉर्ट करते समय, नक्शा operator < का पता लगाने की कोशिश करता है, जिससे इसे नए तत्व के लिए सही स्थान मिल जाता है। हालांकि, में स्ट्रिंग की परिभाषा के लिए operator < नहीं है, इस प्रकार आपको त्रुटि संदेश मिलता है।

-2

एस 1 एक पूर्णांक है जिसे आप स्ट्रिंग के रूप में पास करने की उम्मीद कर रहे हैं ... संभवतः त्रुटि का मुख्य कारण !!

संबंधित मुद्दे