2010-10-19 2 views
6

I g bin mit ++ in UbuntuC++ unordered_map mit g Kompilieren Ausgabe ++

g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3

ich diesen Code haben

#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; 
} 

wenn ich

g++ mycode.cc 

mit kompilieren bekam ich Fehler

error: 'unordered_map' was not declared in this scope 

Fehle ich etwas?

Antwort

9

In GCC 4.4.x sollten Sie nur auf #include <unordered_map> haben, und kompilieren mit dieser Zeile:

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

Mehr Informationen über C++0x support in GCC.

bearbeiten in Bezug auf Ihr Problem

Sie haben std::make_pair<char, bool>(*s, true) zu tun, wenn das Einfügen.

Außerdem würde Ihr Code nur ein einzelnes Zeichen einfügen (das Dereferenzieren über *s). Haben Sie vor, eine einzelne char für einen Schlüssel zu verwenden, oder wollten Sie Zeichenfolgen speichern?

+0

Fehler arbeiten using-Direktive: keine passende Funktion für Aufruf von ‚std: : unordered_map , std :: gleich , std :: allocator >> :: einfügen (char &, bool) ' – icn

+0

@xlione: Kann zeigst du uns den Code? Es scheint, als ob Sie versuchen, einen Referenztyp in Ihre Map einzufügen. – birryree

+0

aktualisiert, danke – icn

19

Wenn Sie nicht wollen, C++ 0x-Modus kompilieren in die Include ändern und zu

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

sollte

+1

es funktioniert! Vielen Dank – icn