J'ai besoin de créer une sorte de pile là où je peux appuyer sur les valeurs sur le dessus: que de les supprimer par la valeur, telle que la suppression de 3: P> 5 8 // (size 2)
3 Réponses :
Si vous ne voulez pas que vous ne voulez pas réallocation de mémoire, vous pouvez également utiliser le conteneur de liste, c'est-à-dire une liste liée ..as il a la plupart des mêmes propriétés au vecteur. :) p>
Liste code> attribue de manière dynamique chaque élément
Oui. Mais cela ne réaffecte pas la mémoire entière chaque fois que de nouveaux éléments sont ajoutés, c'est pourquoi ils ne stockent pas les données de manière contiguë
Vous pouvez écrire un allocator contenant vos 32 valeurs et refuse d'allouer n'importe quelle quantité autre que puis un Je ne pense pas qu'il soit possible d'éviter une allocation dynamique et d'avoir un accès aléatoire aléatoire subliné. P> < / p> 32 code>
std :: vecteur
Je pense qu'aucune réaffectation ne se passera de manière vectorielle sinon de sortir de la mémoire réservée Stackoverflow.com/a/5410129/365251 . Donc, je peux rester avec le vecteur, je pense ...
Si la taille est limitée à 32 éléments Pourquoi ne pas utiliser de tampon circulaire de 32 éléments et de rouler les éléments quand ils sont 32? Il peut y avoir des bugs (n'utilisez pas le dernier () ou enlever () sur un conteneur vide, ne retirez pas un élément non inséré ...), mais cela fonctionne pour les fonctions que vous vouliez. Voici l'idée (le tas est évité)
pushing back 5... 5 c.last == 5 pushing back 3... 5 3 c.last == 3 pushing back 8... 5 3 8 c.last == 8 erasing 3... 5 8 c.last == 8
"meilleur" est une opinion. Utilisez
std :: vecteur code> par défaut en C ++, jusqu'à ce que vous puissiez mesurer une différence.
@Lricheckhardt ma faute. Changé "meilleur" avec "adapté". Comme dit, je veux éviter la ré-allocation de la mémoire ...
de côté:
vecteur :: arrière () code> pour récupérer le dernier élément