2010-10-19 16 views
6

estoy usando g ++ en UbuntuC++ unordered_map compilar problema con g ++

g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3

tengo este código

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

cuando compilo usando

g++ mycode.cc 

llegué error

error: 'unordered_map' was not declared in this scope 

¿Me falta algo?

Respuesta

9

En 4.4.x GCC, sólo debería tener que #include <unordered_map>, y compilar con esta línea:

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

Más información sobre C++0x support in GCC.

editar respecto a su problema

que tiene que hacer std::make_pair<char, bool>(*s, true) al insertar.

Además, su código solo insertaría un solo carácter (la eliminación de referencias a través de *s). ¿Tiene la intención de usar un solo char para una clave, o tenía la intención de almacenar cadenas?

+0

de error: ninguna función coincidente para la llamada a 'std: : unordered_map , std :: equal_to , std :: allocator >> :: insert (char &, bool) ' – icn

+0

@xlione: Can usted nos muestra el código? Parece que estás intentando insertar un tipo de referencia en tu mapa. – birryree

+0

actualizado, gracias – icn

19

Si no desea compilar en C++ 0x modo, el cambio de la inclusión y el uso de directiva para

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

debería funcionar

+1

¡funciona! Gracias – icn

Cuestiones relacionadas