L'accès aux éléments d'une liste de listes en C++

J'ai une liste de listes:

    std::list<std::list<double> > list;

Je l'ai rempli avec des listes avec des doubles en eux (en fait beaucoup, c'est pourquoi je ne suis pas à l'aide d'un vecteur. Tout cela de la copie prend beaucoup de temps.)

Dire que je veux accéder à l'élément qui pourrait être accessible comme list[3][3] si la liste n'était pas une liste mais un vecteur ou tableau à deux dimensions. Comment dois-je procéder?

Je sais que l'accès à des éléments dans une liste est accompli en utilisant un itérateur. Je ne pouvais pas comprendre comment sortir de la double si.

  • Vous devez utiliser vector. Utilisation list uniquement lorsque vous avez besoin d'épissage.
  • si vous n'avez pas besoin d'accès aléatoire et vous avez besoin de supprimer des éléments à partir de début/milieu de conteneur à l'aide de vecteur est une très mauvaise idée.
  • utilisation vector::reserve de réserver de la mémoire et d'éviter les copies supplémentaires si cela est de votre ressort. Aussi, même si vous pouvez obtenir operator[] pour ce que vous voulez, ça sera vraiment inefficace.
  • std::vector est généralement assez intelligent quand il a besoin de réaffecter, de sorte que le plus grand il devient moins il a de réaffecter et de copie. std::list est seulement plus rapide si vous êtes de la création du conteneur de très nombreuses fois au cours de la durée de vie du programme.
  • vous avez raison, si vous avez besoin d'insérer/supprimer à partir de début/milieu, vous ne devriez pas utiliser ce vecteur soit. Juste parce que vous n'avez pas besoin d'un accès aléatoire ne signifie pas que vous ne devriez pas utiliser ce vecteur de bien.
  • il y a une structure de données de liste de boost qui offre à la fois les capacités de std::vector et la liste\

InformationsquelleAutor oaktree | 2012-09-05