2010-10-19 18 views
6

Sto usando g ++ in UbuntuC++ unordered_map compilazione problema con g ++

g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3

Ho questo codice

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

Quando compilo usando

g++ mycode.cc 

ho ottenuto l'errore

error: 'unordered_map' was not declared in this scope 

Mi manca qualcosa?

risposta

9

In GCC 4.4.x, si dovrebbe avere solo #include <unordered_map>, e compilare con questa linea:

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

Maggiori informazioni su C++0x support in GCC.

modifica per quanto riguarda il problema

quello che dovete fare std::make_pair<char, bool>(*s, true) durante l'inserimento.

Inoltre, il codice inserirà un solo carattere (il dereferenziamento tramite *s). Hai intenzione di utilizzare un singolo char per una chiave o intendevi archiviare le stringhe?

+0

errore: nessuna funzione di corrispondenza per chiamata a 'std: : unordered_map , std :: equal_to , std :: allocator >> :: insert (char &, bool) ' – icn

+0

@xlione: Can ci mostri il codice? Sembra che tu stia cercando di inserire un tipo di riferimento nella tua mappa. – birryree

+0

aggiornato, grazie risolto il problema – icn

19

Se non si desidera compilare in modalità C++ 0x, cambiando l'inclusione e la direttiva using a

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

dovrebbe funzionare

+1

funziona! Grazie – icn

Problemi correlati