Maison >développement back-end >C++ >Comment conserver l'ordre d'insertion lors du stockage des paires clé-valeur en C ?
Stockage des paires clé-valeur insérées dans l'ordre avec std::map
Un std::map est une structure de données de conteneur qui stocke la clé -paires de valeurs dans un ordre trié en fonction de la clé. Cependant, lorsqu'il est nécessaire de conserver l'ordre d'insertion des paires, la carte ne propose plus cette fonctionnalité.
Solutions alternatives
Exemple de code :
Considérez cet extrait de code utilisant l'approche boost::multi_index :
#include <boost/multi_index_container.hpp> #include <boost/multi_index/member.hpp> #include <boost/multi_index/random_access.hpp> #include <boost/multi_index/hashed_unique.hpp> struct value_t { std::string s; int i; }; struct string_tag {}; typedef boost::multi_index_container< value_t, boost::multi_index::indexed_by< boost::multi_index::random_access<>, // Insertion order index boost::multi_index::hashed_unique<boost::multi_index::tag<string_tag>, boost::multi_index::member<value_t, std::string, &value_t::s>> > > values_t;
Dans cet exemple, le conteneur values_t utilise deux index : un index d'ordre d'insertion et un index unique haché sur le membre s. Cela permet à la fois une itération ordonnée et des recherches efficaces par la touche s.
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!