66 votes

Pourquoi n’y a-t-il pas de méthode pop_front en C++ std::vector ?

Pourquoi n’y a-t-il pas de méthode en C++ ?

90voto

Lightness Races in Orbit Points 122793

Parce qu’a `` n’a pas de caractéristique particulière en ce qui concerne l’insertion d’éléments à l’avant, contrairement à d’autres conteneurs. La fonctionnalité fournie par chaque conteneur a du sens pour ce conteneur.

Vous devriez probablement utiliser un `` , qui est explicitement bon pour insérer à l’avant et à l’arrière.

Consultez ce diagramme.

41voto

SEGStriker Points 517

Bien qu’inefficace sur les grands vecteurs, ce qui suit est équivalent à un pour un

Comme indiqué dans d’autres réponses, `` n’est pas conçu pour supprimer le premier élément et nécessitera de déplacer / copier tous les éléments restants. Selon le cas d’utilisation spécifique, il peut être pratique d’envisager d’autres conteneurs.

15voto

nightcracker Points 34498

Parce que et sont des opérations spéciales pour un vecteur qui ne nécessitent que du calcul. Toute autre poussée ou pop prend .

Ce n’est pas un « bug » ou une « bizarrerie », c’est juste une propriété du conteneur vectoriel. Si vous avez besoin d’un pop_front envisager de passer à un autre conteneur.

4voto

mrchlblng Points 637

Cependant, si vous avez besoin d’un pop_front et que vous ne vous souciez PAS de l’index des éléments dans le vecteur, vous pouvez faire une sorte de pop_front avec quelque chose comme

Dan Higgins en parle aussi : https://youtu.be/oBbGC-sUYVA?t=2m52s

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X