2010-04-22 3 views
6

Je me demande si vous connaissez un type de conteneur de mappes associatives C++ sur lequel je peux effectuer plusieurs recherches de clés. La carte doit avoir des recherches à temps constant mais je m'en fous si elle est ordonnée ou non ordonnée. Ça doit juste être rapide. Par exemple, je veux stocker un groupe d'objets std :: vector dans une carte avec un entier et un void * comme clés de recherche. L'int et le void * doivent correspondre pour que mon vecteur soit récupéré. Est-ce que quelque chose comme ça existe déjà? Ou vais-je devoir rouler le mien. Si oui, des suggestions? J'ai essayé de stocker un boost :: unordered_map dans un autre boost :: unordered_map, mais je n'ai pas encore eu de succès avec cette méthode. Peut-être que je vais continuer Pershing cette méthode s'il n'y a pas de façon plus simple. Merci!Mappe de touches multiples en C++

Répondre

4

La recherche constante nécessite une carte de hachage. Vous pouvez utiliser un boost::unordered_map (ou tr1). La clé serait le combined hash de l'int et le pointeur vide.

+0

C'est exactement ce que je cherchais. Merci! – Morgan

0

Vous pouvez utiliser boost::multi_index.

(bien que je pense que ce que vous voulez réellement est d'utiliser un type qui contient le vide * et l'entier comme clé de votre carte, et juste de comparer les données brutes pour fournir l'opérateur de comparaison pour la carte)

2

Si vous ne voulez pas utiliser boost, vous pouvez essayer map< int, map<void*, vector> >. Les recherches sont cependant O (log (taille de carte)).

Questions connexes