2010-10-19 12 views
6

मैं जी ++ का उपयोग कर रहा उबंटूC++ unordered_map जी ++

g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3

में के साथ इस मुद्दे संकलन मैं इस कोड

#include<unordered_map> 
using namespace std; 

bool ifunique(char *s){ 
    unordered_map<char,bool> h; 
    if(s== NULL){ 
    return true; 
    } 
    while(*s){ 
    if(h.find(*s) != h.end()){ 
     return false; 
    } 
    h.insert(*s,true); 
    s++; 
    } 
    return false; 
} 

है जब मैं

g++ mycode.cc 

का उपयोग कर संकलन मैं त्रुटि

मिला
error: 'unordered_map' was not declared in this scope 

क्या मुझे कुछ याद आ रही है?

उत्तर

9

जीसीसी 4.4.x में, आप केवल #include <unordered_map> के लिए होनी चाहिए, और इस लाइन के साथ संकलन: के बारे में C++0x support in GCC

g++ -std=c++0x source.cxx

में अधिक जानकारी। आपकी समस्या

के बारे में

संपादित आप सम्मिलित करते समय std::make_pair<char, bool>(*s, true) क्या करना है।

इसके अलावा, आपका कोड केवल एक ही वर्ण (*s के माध्यम से dereferencing) डालेगा। क्या आप एक कुंजी के लिए एक char का उपयोग करना चाहते हैं, या क्या आप तारों को स्टोर करना चाहते हैं?

+0

त्रुटि काम करना चाहिए नहीं करना चाहते हैं: 'एसटीडी कॉल के लिए कोई मिलता-जुलता समारोह: : unordered_map , std :: equal_to , std :: allocator >> :: सम्मिलित करें (char &, bool) ' – icn

+0

@xlione: Can आप हमें कोड दिखाते हैं? ऐसा लगता है कि आप अपने मानचित्र में एक संदर्भ प्रकार डालने की कोशिश कर रहे हैं। – birryree

+0

अपडेट किया गया, धन्यवाद – icn

19

आप C++ 0x मोड में संकलित करने के लिए करने के लिए, शामिल हैं बदल रहा है और

#include <tr1/unordered_map> 
using namespace std::tr1; 

के निर्देशों का उपयोग

+1

यह काम करता है! धन्यवाद – icn