Une bonne fonction de hachage pour un vecteur

J'ai un vecteur d'entier que je voudrais stocker efficacement dans un unordered_map en c++11, ma question est: est-ce

Comment puis-je mieux les stocker ces et d'optimiser pour .find requêtes?

Je suis venu avec la suite de hasher:

class uint32_vector_hasher {
public:
  std::size_t operator()(std::vector<uint32_t> const& vec) const {
    std::size_t ret = 0;
    for(auto& i : vec) {
      ret ^= std::hash<uint32_t>()(i);
    }
    return ret;
  }
};

puis stocker les objets dans un unordered_map j'ai cependant quelques questions

  1. quelle est la fréquence de hachage calculée, seulement un, certain nombre aléatoire ou temps?
  2. Serait-il judicieux de créer un objet wrapper avec == et les fonctions de hachage à faire mémoriser les valeurs de hachage et éviter qu'elle ne soit calculé plus d'une fois?

Lorsque le profilage j'ai remarqué qu'une quantité assez importante de mon cpu de temps à faire des recherches sur le non ordonnée des cartes, ce n'est pas exactement optimal 🙁

source d'informationauteur Martin Kristiansen