2010-10-19 29 views
6

Tôi đang sử dụng g ++ trong UbuntuC++ unordered_map soạn thảo vấn đề với g ++

g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3

tôi có mã này

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

khi tôi biên dịch sử dụng

g++ mycode.cc 

tôi đã nhận lỗi

error: 'unordered_map' was not declared in this scope 

Tôi có thiếu gì đó không?

Trả lời

9

Trong GCC 4.4.x, bạn chỉ cần phải #include <unordered_map>, và biên dịch với dòng này:

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

Thông tin thêm về C++0x support in GCC.

chỉnh sửa liên quan đến vấn đề của bạn

Bạn phải làm std::make_pair<char, bool>(*s, true) khi chèn.

Ngoài ra, mã của bạn sẽ chỉ chèn một ký tự đơn (dereferencing qua *s). Bạn có ý định sử dụng một đơn char cho một khóa hay ý của bạn là lưu trữ chuỗi?

+0

lỗi: không có chức năng phù hợp cho cuộc gọi đến 'std: : unordered_map , std :: equal_to , std :: allocator >>> insert (char &, bool) ' – icn

+0

@xlione: Có thể bạn cho chúng tôi thấy mã? Có vẻ như bạn đang cố gắng chèn loại tham chiếu vào bản đồ của mình. – birryree

+0

được cập nhật, nhờ sự cố – icn

19

Nếu bạn không muốn để biên dịch C++ 0x chế độ, thay đổi bao gồm và sử dụng chỉ thị để

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

nên làm việc

+1

nó hoạt động! cảm ơn – icn

Các vấn đề liên quan