Existe-t-il un moyen d'obtenir toutes les clés d'une hash_map STL? Ou dois-je utiliser quelque chose comme set ou hash_set pour les enregistrer avant l'insertion?Comment obtenir toutes les clés de STL hash_map?
2
A
Répondre
6
hash_map<string, void *> hashMap;
vector<string> keys;
keys.reserve(hashMap.size());
for (hash_map<string, void *>::iterator iter = hashMap.begin();
iter != hashMap.end();
++iter)
{
keys.push_back(iter->first);
}
+0
Je pense que vous voulez dire "iter.first" –
4
Il suffit de parcourir le hash_map
; Pour chaque itération, iter->first
est la clé.
4
Miser sur la réponse de Igor Oks:
hash_map<string, void *> hashMap;
vector<string> keys;
keys.reserve(hashMap.size());
transform(hashMap.begin(), hashMap.end(), back_inserter(keys),
select1st<hash_map<string, void*>::value_type>());
0
Vous voudrez peut-être itérer le hash_map, et extraire le premier élément de la paire pointée par la valeur iterator actuelle (le premier élément de la paire est en fait une clé).
// Assuming that hm is an instance of hash_map:
for (auto it = hm.begin(); it != hm.end(); ++it) // for each item in the hash map:
{
// it->first is current key
// ... you can push_back it to a vector<Key> or do whatever you want
}
Cette fonction est possible d'extraire les clés d'un hash_map à un vecteur:
template <typename Key, typename Type, typename Traits, typename Allocator>
vector<Key> extract_keys(const hash_map<Key, Type, Traits, Allocator> & hm)
{
vector<Key> keys;
// If C++11 'auto' is not available in your C++ compiler, use:
//
// typename hash_map<Key, Type, Traits, Allocator>::const_iterator it;
// for (it = hm.begin(); ...)
//
for (auto it = hm.begin(); it != hm.end(); ++it)
{
keys.push_back(it->first);
}
return keys;
}
Questions connexes
- 1. Détection de collision dans les STL hash_map
- 2. Comment utiliser SGI STL hash_map?
- 3. hash_map plante en C++ stl
- 4. problème de suppression des clés/valeurs sur STL hash_map lors de la duplication des clés
- 5. stl hash_map plus lent que la simple fonction de hachage?
- 6. Le coût en mémoire d'une structure hash_map en C++ STL
- 7. hash_map et stdext :: hash_map?
- 8. Carte: Comment obtenir toutes les clés associées à une valeur?
- 9. Comment supprimer toutes les clés de JSON?
- 10. Comment obtenir toutes les clés (uniquement des clés) de l'objet dictionnaire sans passer par chaque boucle
- 11. viewControllerForNewContact affiche toutes les clés
- 12. Obtenir toutes les clés pour les éléments répétés correspondant
- 13. Obtenir toutes les clés de la table avec des types
- 14. obtenir toutes les clés du tableau de valeur
- 15. Comment obtenir les clés CGPDFDictionaryRef
- 16. hash_map ne fonctionne pas
- 17. magasins de carte STL clés recherchés
- 18. Comment trouver toutes les clés étrangères?
- 19. Comment utiliser stdext :: hash_map?
- 20. Comment récupérer toutes les clés d'un dictionnaire?
- 21. Obtenir les toutes dernières clés S3 en premier
- 22. PHP Obtenir toutes les clés numériques/anonymes dans un tableau
- 23. array_keys vs foreach pour obtenir toutes les clés
- 24. Comment parcourir toutes les clés de préférences partagées?
- 25. Comment utiliser for_each pour supprimer toutes les valeurs d'une carte STL?
- 26. Comment ajuster les objets flash de toutes les images clés
- 27. Traversant toutes les clés de la matrice
- 28. Suppression de toutes les clés primaires
- 29. Comment obtenir que dupliquer les valeurs de toutes les clés d'un tableau associatif
- 30. Javascript: obtenir toutes les clés entières et toutes les valeurs dans un tableau?
Notez que dans toutes les solutions proposées les touches sont non ordonnée (ce qui est bien, pourquoi l'ordre s'il n'y a pas besoin ?) Si vous en avez besoin commandé, vous devrez trier le résultat –