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

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

Mary-Kate Olsen
Libérer: 2024-11-29 20:30:11
original
596 Les gens l'ont consulté

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

Récupération de clés ou de valeurs d'un std::map dans un vecteur

Récupération de toutes les clés ou valeurs d'un std::map dans un vector est une tâche courante, mais std::map lui-même ne dispose pas d'une fonction membre explicite à cet effet. Une approche consiste à définir des foncteurs personnalisés, comme démontré dans le code fourni :

struct RetrieveKey
{
    template <typename T>
    typename T::first_type operator()(T keyValuePair) const
    {
        return keyValuePair.first;
    }
};

map<int, int> m;
vector<int> keys;

// Retrieve all keys
transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey());

// Dump all keys
copy(keys.begin(), keys.end(), ostream_iterator<int>(cout, "\n"));
Copier après la connexion

Cette solution manipule les données en dehors de la carte, ce qui peut ne pas être idéal dans certains cas. Une approche alternative utilisant une boucle for simple offre une solution plus claire et plus explicite :

map<int, int> m;
vector<int> key, value;
for (auto it = m.begin(); it != m.end(); ++it) {
  key.push_back(it->first);
  value.push_back(it->second);
  cout << "Key: " << it->first << endl;
  cout << "Value: " << it->second << endl;
}
Copier après la connexion

En parcourant la carte de cette manière, nous pouvons extraire à la fois les clés et les valeurs directement dans des conteneurs vectoriels.

Une autre option, si vous utilisez la bibliothèque Boost, simplifie davantage le processus :

map<int,int> m;
pair<int,int> me; // what a map<int, int> is made of
vector<int> v;
BOOST_FOREACH(me, m) {
  v.push_back(me.first);
  cout << me.first << "\n";
}
Copier après la connexion

Cette version est concise, lisible et fournit un contrôle explicite sur le processus de récupération. La sélection de la méthode la plus appropriée dépend des besoins spécifiques et des préférences du développeur.

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