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

¿Qué requisitos debe cumplir my_type aquí? (Además de una especialización para std :: hash)Requisitos para elementos en std :: unordered_set

+0

Puede buscar esto en n3337 [unord.req] 23.2.5. Busque n3337 en [este] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/) página. – bames53

Respuesta

7

Necesita una especialización para std :: hash, y necesita un operador == definido para manejar las colisiones hash.

EDITAR: También debe asegurarse de que su tipo tenga un constructor de copia (o permita que el compilador genere uno para usted) porque los contenedores STL tienen una semántica de valores.

EDIT2: como un ejemplo de cómo hacer esto, puede consultar this other SO answer.

+0

¿Qué hay de mover/copiar constructores y operadores de asignación? – cooky451

+0

Sí, probablemente también los necesites. Pero más directamente, el tipo debe ser comparable e irhable. – bstamour

+0

¿Entonces move no hace el trabajo? (Esperaba que lo hiciera, ya que el vector, etc. funciona bien ...) – cooky451

Cuestiones relacionadas