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

Quali requisiti deve soddisfare my_type qui? (Oltre a una specializzazione per std :: hash)Requisiti per gli elementi in std :: unordered_set

+0

Si può semplicemente cercare in n3337 [unord.req] 23.2.5. Trova n3337 su [questo] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/) pagina. – bames53

risposta

7

È necessaria una specializzazione per std :: hash e occorre un operatore == definito per gestire le collisioni di hash.

MODIFICA: è necessario assicurarsi che il proprio tipo abbia un costruttore di copia (o che il compilatore ne generi uno per sé) perché i contenitori STL hanno una semantica del valore.

EDIT2: come esempio di come eseguire questa operazione, è possibile controllare this other SO answer.

+0

E i costruttori di move/copy e gli operatori di assegnazione? – cooky451

+0

Sì, probabilmente ne avrai bisogno anche tu. Ma più direttamente, il tipo deve essere lavabile e l'uguaglianza paragonabile. – bstamour

+0

Quindi spostare non fa il lavoro? (Lo speravo, dal momento che il vettore ecc. Andava bene con esso ..) – cooky451

Problemi correlati