Maison > développement back-end > C++ > Comment extraire efficacement les clés et les valeurs d'un std :: map dans un vecteur ?

Comment extraire efficacement les clés et les valeurs d'un std :: map dans un vecteur ?

Mary-Kate Olsen
Libérer: 2024-11-30 11:16:11
original
438 Les gens l'ont consulté

How to Efficiently Extract Keys and Values from a std::map into a Vector?

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;
    }
};
Copier après la connexion

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);
}
Copier après la connexion

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);
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal