Récupérer des clés et des valeurs d'un std::map dans un vecteur
Obtenir des clés ou des valeurs d'un std::map et les stocker dans un vecteur est une opération courante. Bien qu'il existe différentes méthodes pour y parvenir, deux approches largement utilisées sont mises en évidence ci-dessous :
Utilisation de foncteurs personnalisés :
Une technique consiste à créer des foncteurs personnalisés qui transforment la clé-valeur paires dans le type souhaité. Par exemple, pour récupérer des clés :
struct RetrieveKey { template <typename T> typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } };
Ce foncteur peut être utilisé avec l'algorithme de transformation pour parcourir la carte et extraire les clés.
Utiliser des itérateurs :
Une approche plus simple consiste à utiliser des itérateurs pour parcourir la carte et accéder directement aux clés ou aux valeurs. Cette méthode offre une plus grande flexibilité et un plus grand contrôle sur l'opération :
for (std::map<int, int>::iterator it = m.begin(); it != m.end(); ++it) { keys.push_back(it->first); values.push_back(it->second); }
Option de la bibliothèque Boost :
Si l'utilisation de la bibliothèque Boost est une option, la macro BOOST_FOREACH propose un Syntaxe concise et lisible pour l'itération :
BOOST_FOREACH(pair<int, int> p, m) { v.push_back(p.first); }
Le choix de l'approche dépend en fin de compte des exigences et des préférences spécifiques du développeur. L'approche foncteur offre une polyvalence et permet une gestion séparée des clés et des valeurs. Les itérateurs offrent un accès direct et simple aux données. L'option de la bibliothèque Boost simplifie l'itération grâce à sa syntaxe concise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!