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
Mary-Kate Olsenoriginal
2024-11-30 11:16:11439parcourir

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;
    }
};

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!

Déclaration:
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