Carte avec plusieurs clés en C ++

Je veux stocker des données à la fois, leur nom et leur index. En d’autres termes, je souhaite mapper ssortingng noms de ssortingng sur des objects et leur donner également un ordre personnalisé.

Ce que je propose en premier est un std::vector des paires de la clé de ssortingng et de l’object. L’ordre était donné par la position dans le vecteur.

 std::vector<std::pair > 

Mais cette approche semble être sous-optimale car elle ne vérifie pas automatiquement le caractère unique des noms de ssortingng . De plus, il est inopportun de regrouper les objects en fonction de leur ordre, parce que, logiquement, leur distinction de premier ordre est le nom.

J’ai besoin d’une structure de données qui permette l’access à la fois par nom et par index.

 std::magic collection; // access by either ssortingng or unsigned int key collection.insert("name", 42, new object()); collection["name"] collection[42] 

Existe-t-il déjà une structure de données pour ce cas d’utilisation? Si non, comment puis-je en mettre un ensemble, de préférence en utilisant la bibliothèque standard? Aussi, je voudrais un moyen d’insérer de nouveaux éléments à la position après un élément donné sans déplacer tous les autres éléments.

Boost fournit un ensemble de conteneurs juste à cette fin, voir: boost :: multiindex