Y a-t-il une méthode pop_front dans c ++ stdvector?

Y a-t-il une méthode pop_front dans c ++ stdvector?
Un langage de programmation de haut niveau appelé C ++ peut prendre en charge un large éventail de structures de données, y compris les vecteurs. Un vecteur est un tableau dynamique d'éléments de mémoire adjacents ayant une taille maximale prédéterminée. Il s'agit d'un conteneur flexible et pratique en C ++ qui fournit une gestion efficace de la mémoire et une allocation flexible. L'une des questions fréquemment posées parmi les programmeurs C ++ est de savoir s'il y a un pop_front Méthode dans STD :: Vector. Découvrons-le:

Y a-t-il une méthode pop_front dans C ++ STD :: Vector?

Non est la réponse rapide à cette requête. Les vecteurs n'ont pas de méthode pop_front intégrée dans la bibliothèque standard C ++, contrairement à d'autres classes de conteneurs comme Deque et List. Le principe de conception fondamental des vecteurs, qui favorise un accès aléatoire rapide aux éléments, est la cause de cette absence. La suppression du premier élément nécessite un décalage de tous les composants suivants car les vecteurs stockent leurs éléments dans un bloc de mémoire contigu.

Il est essentiel d'examiner pop_back afin de comprendre pourquoi pop_front est indisponible dans std :: vector. Une méthode vectorielle commune appelée pop_back élimine le composant final du conteneur. Ceci est accompli en exécutant le destructeur du membre qui a été supprimé et en abaissant la taille du vecteur par un. À mesure que les vecteurs se développent de leur dos, l'élimination du composant final est une opération simple qui n'implique pas de déplacer d'autres éléments. Pourtant, l'élimination de l'élément initial entraînerait que tous les composants suivants déplacent un espace vers la gauche. Étant donné que cette procédure copie chaque élément vectoriel, il est incroyablement inefficace, en particulier pour les grands vecteurs. Le pop_front est donc exclu du vecteur std :: afin d'empêcher le ralentissement des opérations vectorielles.

Alternatives de la méthode pop_front en C++

Il existe de nombreuses façons d'éliminer les composants de l'avant d'un vecteur malgré l'absence de pop_front méthode.

1: Méthode effacer

Une technique consiste à utiliser le Méthode d'effacement sur l'élément initial du vecteur. Le Méthode d'effacement Modifie les composants restants pour refléter la suppression d'un élément ou d'un ensemble d'éléments du vecteur. Ainsi, nous pouvons utiliser la ligne de code suivante en C ++ pour obtenir le même comportement que pop_front:

#inclure
#inclure
modèle
void pop_front (vecteur std :: & v)

si (V.size ()> 0)
V.Effacer (V.commencer());


int main()

STD :: Vector nums = 5,6,7,8,9;
pop_front (nums);
pour (int i: nums)
std :: cout << i << ";

retour 0;

Dans le code ci-dessus, nous utilisons le effacer() fonctionner comme une alternative de pop_front () Pour supprimer le premier élément d'un vecteur initialisé. Nous avons défini une fonction nommée pop_front (), Et dans la fonction, nous utilisons le commencer() et effacer() Fonctions pour supprimer le premier élément du vecteur.

Sortir

2: Méthode Deque

Un autre conteneur dans la bibliothèque standard C ++ est le Deque, qui offre la capacité d'un récipient dynamique en forme de tableau avec la capacité supplémentaire d'ajouter et de supprimer les éléments de l'avant et de l'arrière. Utilisant un Deque (file d'attente à double extrémité) à la place d'un vecteur est un substitut supplémentaire à pop_front. Ainsi, nous pouvons l'utiliser pour obtenir le même comportement que pop_front:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

se débarrasser MyDeque;
mydèque.push_front (4);
mydèque.push_front (5);
mydèque.push_front (6);
mydèque.pop_front ();
pour (auto it = mydeque.commencer(); il != Mydeque.fin(); ++ it)
couter << " << *it;

Dans le code ci-dessus, nous utilisons un push_front () fonction pour pousser les valeurs dans un déso pop_front () fonction pour supprimer le premier élément du deque.

Sortir

Conclusion

En raison de sa structure de mémoire interne et de ses principes de conception, STD :: Vector en C ++ n'a pas de pop_front méthode. Il existe cependant plusieurs techniques supplémentaires, comme l'utilisation de se débarrasser et effacer Méthodes qui peuvent être utilisées pour éliminer les éléments de l'avant du conteneur. Lors de la sélection de la meilleure approche pour leur implémentation, les programmeurs doivent faire des compromis entre la commodité et l'efficacité.