Bonjour à tous,
Jusqu'à présent, j'utilisais des c-string (un simple tableau de char) plutot que des c++ string pour des raisons de performance (je n'ai que récemment découvert les moultes réallocations(!!) des string c++).
Je trouve dommage d'avoir à préallouer à chaque fois ce tableau, car je me retrouve à hardcoder ces valeurs et il est courant d'allouer bien plus que nécessaire.
Je ne fais que insérer des chaines de caractères au début (rarement) et à la fin (toujours). J'ai aussi parfois besoin supprimer les n derniers caractères (ou de reculer et de les overwriter ce qui revient au même).
J'ai donc codé une solution intermédiaire à base de listes chaînées de c-string, en ayant un proxy qui alloue de nouveaux blocks si nécessaire. Le problème, c'est que je dois maintenir un contexte qui contient des infos telles que la position du curseur courant du block courant, l'adresse du block courant etc... Et ce maintient est couteux.
J'ai fait quelques recherches sur le WWW à la recherche de solutions miracles, et j'ai peut etre trouvé mon bonheur dans les ropes (http://www.sgi.com/tech/stl/Rope.html), dont l'implémentation GNU semble être exactement reprise de SGI.
Déjà, pensez-vous que je suis sur une bonne piste?
Si oui, je me demande si je pourrai raisonnablement créer des iovecs à partir des blocks internes des ropes pour éviter des copies inutiles..
Merci bcp
Partager