Bonjour,
Dans le cadre d'un projet de communication réseau, je voudrai créer un buffer circulaire pointant sur des objets de type standard (int, double).
Je me pose la question si cela ne peut pas étre fait avec un conteneur.
Merci pour votre aide
Version imprimable
Bonjour,
Dans le cadre d'un projet de communication réseau, je voudrai créer un buffer circulaire pointant sur des objets de type standard (int, double).
Je me pose la question si cela ne peut pas étre fait avec un conteneur.
Merci pour votre aide
Pas la peine de te fatiguer à réinventer la roue: cela existe déjà dans boost::circular_buffer !
ce n'est qu'une sorte de dequeue modifiée il me semble.
Bonne chance ;)
merci pour ta réponse, juste une petite question en plus
est il possible que quand le buffer soit plein, le prochaine valeur rentré effectue un décalage des données. un peu comme une pile.
c'est à dire que l'on supprime la premiére valeur.
que l'on décale ensuite toutes les autre.
et que l'on rentre l'élément à la fin du buffer.
En fait, on supprime la dernière valeur du buffer (la plus vielle) eton écrit la nouvelle à la place (puisque la position du premier élément correspond maintenant à la position du dernier).
Ce mécanisme est également décrit dans la doc que je t'ai passé.
D'une manière générale, je ne cois pas pouvoir en dire plus que la doc ...
Bonne lecture ;)
oui j'ai compris, mais n'existe il pas un moyen de faire ce que j'ai expliqué??
merci
je ne comprend pas très bien ce que tu veux faire ...
tu veux dire que si le buffer est plein, on remplace la dernière valeur entrée par la nouvelle valeur c'est ça ?
Ce n'est pas vraiment le mécanisme correct d'un buffer circulaire, mais on peux le faire. il suffit, au lieu d'insérer directemment, de vérifier avec la fonction full() si le buffer est plein, et si c'est le cas, de commencer par faire un rotate() sur l'itérator suivant celui renvoyé par begin() ce qui te permettra donc , lorsque tu inserera ensuite l'élément de faire en sorte que l'ex premier élément soit supprimé puisqu'il est à présent le dernier.
Voilà voilà :)
Bonne chance ;)