J'ai une structure de données qui stocke ... bien, des données. Maintenant, j'ai besoin d'accéder à différentes données de façon légèrement différente, donc je construis essentiellement un index en mémoire. Mais je me demande: l'index devrait-il contenir des pointeurs ou des copies?Construction d'un index: Copies ou pointeurs?
Pour élaborer, dire que j'ai
class Widget
{
// Ways to access the list of gears...
private:
std::list<Gears> m_gears;
};
Maintenant, j'ai deux Widget
s, et il existe entre ces deux une correspondance entre leurs Gear
s. À l'heure actuelle, c'est
boost::unordered_map<Gear, Gear>
mais Gear
est une classe assez lourde, et je me sens comme faire autant de copies est mauvaise conception. Je pourrais stocker un pointeur, mais alors le mappage n'est valide que pour la durée de vie des Widget
s, et vous commencez à obtenir ->
s ... (Et si std::list
change un std::vector
, cela devient plus complexe ...) En ce qui concerne les copies, c'est en fait légèrement pire: Il y a deux boost::unordered_map
s, un pour chaque direction. Donc, pour chaque Gear
, j'en fais deux copies.
Sinon, je pourrais mettre l'index à l'intérieur de la classe Widget
, mais j'ai l'impression que cela viole les responsabilités de la classe Widget
.
Le boost ne possède-t-il pas de conteneur multi-index? – sbi