2010-03-02 5 views
0

코드 컴파일 라인 실패구조체를 hashmap에서 키로 사용합니다. 값을 삽입하는 방법?

 
    map_free_segments [ loc ] = color; 

오류의 첫 번째 라인은 :
오류 C2784 '부울 표준 : 운영자 < (CONST STD : 벡터 < _Ty, _Alloc> &, CONST STD : 벡터 < _Ty, _Alloc> &는)

: _Alloc> & const를 현지화 '

완전한 소스'에서 'const를 표준 : : 벡터 < _Ty'에 대한 템플릿 인수를 추론 할 수 없었다 '

 

#include <windows.h> 

#include <hash_map> 
using namespace std; 
using namespace stdext; 

#pragma pack(1) 
struct localization 
{ 
    char X; 
    char Y; 
    char Z; 
    char L; 
}; 
#pragma pack(1) 

typedef hash_map<localization,unsigned long> type_map_free_segments; 

//typedef pair<localization, unsigned long> pair_loc; 


int main(int argc, CHAR* argv[]) 
{ 
    unsigned long color = 1234; 
    type_map_free_segments map_free_segments; 

    localization loc; 

    loc.X = 1; 
    loc.Y = 2; 
    loc.Z = 3; 
    loc.L = 5; 

    map_free_segments [ loc ] = color; 
    //map_free_segments.insert(pair_loc(loc, color)); 

    return 0; 
} 

 

답변

0

hash_map에서 키로 복잡한 struct/class를 사용하려면 두 키를 비교하는 방법을 컨테이너에 알려주는 구현을 제공해야합니다.

귀하의 구조체가 수행 할 < 연산자를 구현해야합니다.

구조체 값을 기반으로 해시를 계산하려면 hash_comp 함수를 정의해야 할 수도 있습니다.

자세한 내용은 hash_compare 클래스의 도움말을 참조하십시오.

관련 문제