Tampon d'espacement
From Wikipedia, the free encyclopedia
En informatique, un tampon à trou est un tableau dynamique qui permet des opérations d'insertion et de suppression efficaces regroupées à proximité d'une même position du tableau. Les tampons à trou sont particulièrement courants dans les éditeurs de texte, où la plupart des modifications apportées au texte se produisent à l'emplacement actuel du curseur ou à proximité de celui-ci.
Le texte est stocké dans un tampon constitué de deux segments contigus, avec un espace entre eux pour l'insertion d'un nouveau texte. Le déplacement du curseur implique la copie du texte d'un côté de l'espace à l'autre (parfois, la copie est retardée jusqu'à la prochaine opération qui modifie le texte). L'insertion ajoute un nouveau texte à la fin du premier segment; la suppression le supprime.
Le texte dans un tampon à trou est représenté sous forme de deux chaînes de caractères, qui occupent très peu d'espace supplémentaire. La recherche de motifs et l'affichage sont très rapides, par rapport à des structures de données plus sophistiquées telles que les listes chaînées ou les cordes.
Cependant, les opérations à différents endroits du texte et celles qui comblent le "trou" (ce qui nécessite de redimensionner le tableau pour en créer un nouveau) peuvent nécessiter la copie de la majeure partie du texte, ce qui est particulièrement inefficace pour les fichiers volumineux. L'utilisation de tampons à trou repose sur l'hypothèse selon laquelle une telle recopie se produit suffisamment rarement pour que son coût puisse être amorti sur les opérations à faible coût les plus courantes. Cela fait du tampon d'espacement une alternative plus simple à la corde pour une utilisation dans les éditeurs de texte [1] tels qu'Emacs[2].
Exemple
Ci-dessous sont décrits quelques exemples d’opérations avec des tampons à trou. Le "trou" est représenté par l'espace vide entre les crochets. Cette représentation est un peu trompeuse : dans une implémentation typique, le début et la fin du trou sont sauvegardés à l'aide de pointeurs ou d'indices du tableau, et le contenu du trou est ignoré; cela permet, par exemple, d'effectuer des suppressions en ajustant un pointeur sans modifier le texte dans le tampon.
État initial :
This is the way [ ]out.
L'utilisateur insère du texte :
This is the way the world started [ ]out.
L'utilisateur déplace le curseur avant « started »; le système déplace « started » du premier tampon au deuxième tampon :
This is the way the world [ ]started out.
L'utilisateur ajoute du texte en remplissant le trou; le système crée un nouveau trou :
This is the way the world as we know it [ ]started out.
