에러 표기

C2338  The C++ Standard doesn't provide a hash for this type.

            => C++ 표준은 이 유형에 대한 해시를 제공하지 않습니다.

 

 

 

원인

  std::unordered_map<CString, CString> m_mapPLCAddr;  

  std::unordered_map 에 키가 CString 일 때 발생

 

키를 CString 로 쓰지 않거나

map 를 사용 

 

 

////////////////////////////////////////////////////////////////////////

 int 타입일때 동일 에러 발생 

//.h
public:
std::unordered_map<std::pair<int, int>, int> m_mapOX;
//.cpp
m_mapOX[std::make_pair(m_nRound, m_nCount)] = 1;

 

수정


//.h
using namespace std;
template <class T> inline void hash_combine(size_t &seed, T const &v) {
    seed ^= hash<T>()(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
}

struct pair_hash {
    template <class T1, class T2>
    size_t operator()(const pair<T1, T2> &p) const {
        size_t seed = 0;
        hash_combine(seed, p.first);
        hash_combine(seed, p.second);
        return seed;
    }
};

public:
std::unordered_map<std::pair<int, int>, int , pair_hash> m_mapOX;

//.cpp
m_mapOX[std::make_pair(m_nRound, m_nCount)] = 1;

 

 

 

출처 : https://stackoverflow.com/questions/32685540/why-cant-i-compile-an-unordered-map-with-a-pair-as-key

 

 

 

+ Recent posts