2012-03-29 5 views
6
std::unordered_set<my_type> my_set; 

여기서 my_type을 충족해야하는 요구 사항은 무엇입니까? (std :: hash 전문 외에도)std :: unordered_set의 요소 요구 사항

+0

당신은 이것을 n3337 [unord.req] 23.2.5에서 찾을 수 있습니다. [this] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/) 페이지에서 n3337을 찾으십시오. – bames53

답변

7

std :: hash에 대한 전문화가 필요하며 해시 충돌을 처리하기 위해 == 연산자를 정의해야합니다.

편집 : STL 컨테이너에 값 의미가 있으므로 형식에 복사 생성자가 있는지 확인하거나 컴파일러에서 생성해야합니다.

EDIT2 :이 작업을 수행하는 방법의 예는 this other SO answer입니다.

+0

이동/복사 생성자 및 할당 연산자는 어떻게됩니까? – cooky451

+0

그래, 당신도 아마 그것들을 필요로 할 것이다. 그러나 좀 더 직접적으로 유형은 해시 가능하고 동등한 수준이어야합니다. – bstamour

+0

그래서 움직이면 그 일을하지 않습니까? (나는 벡터와 같은 것이기 때문에 잘 될 것이라고 기대했다.) – cooky451