Puskuri-ikkuna

Puskuriikkuna ( eng.  Gap buffer ) tietojenkäsittelytieteessä on dynaaminen taulukko , jonka avulla voit tehokkaasti lisätä ja poistaa elementin tietyltä alueelta. Puskuriikkuna on erityisen yleinen tekstieditoreissa , joissa useimmat tekstin muutokset tapahtuvat lähellä kohdistimen sijaintia . Teksti tallennetaan suureen puskuriin kahteen vierekkäiseen segmenttiin, jossa on ikkuna elementtien lisäämiseksi niiden väliin. Kohdistimen siirtäminen aiheuttaa tekstin kopioimisen ikkunan yhdeltä puolelta toiselle (toisinaan kopiointi viivästyy tekstinvaihtotoimintoon asti). Liitä lisää uuden tekstin ensimmäisen segmentin loppuun. Poistaminen lisää ikkunan kokoa.

Puskuri-ikkunassa oleva teksti on jaettu kahteen merkkijonoon, jotka käyttävät hyvin vähän ylimääräistä muistia ja ovat helposti näytettävissä tai haettavissa verrattuna muihin tietorakenteisiin, kuten linkitettyihin listoihin . Kuitenkin toiminnot eri paikoissa tiedostossa ja toiminnot, jotka täyttävät ikkunan (edellyttäen uuden ikkunan luomista), voivat vaatia suurten tekstimäärien kopioimista, mikä on erityisen tehotonta suurille tiedostoille.

Puskuriikkunan käyttö perustuu olettamukseen, että uudelleenkopiointia tapahtuu niin harvoin, että sen kustannukset voidaan kompensoida halvemmalla toiminnalla. Tämä tekee puskuriikkunasta helpomman vaihtoehdon Ropelle käytettäväksi tekstieditoreissa 1] kuten Emacsissa [2]

Esimerkki

Alla on esimerkkejä puskuriikkunan toiminnoista. Ikkunaa edustaa tyhjä väli hakasulkeiden välissä. Tämä esitys on hieman harhaanjohtava: yleensä toteutuksessa päät esitetään osoittimilla tai taulukon indekseillä ja ikkunan sisältö jätetään huomiotta, mikä mahdollistaa esimerkiksi poistamisen vain asettamalla osoitin muuttamatta puskurin tekstiä . On yleinen käytäntö, että ikkunaosoittimissa käytetään puoliavoin välilyöntiä, eli start_window-osoitin asetetaan ensimmäisen segmentin viimeisen merkin jälkeen ja end_window-osoitin toisen segmentin ensimmäiseen merkkiin (tai vastaavasti osoittimet ovat asetettu "merkkien väliin")

Alkutila:

Tämä on tie [ ]ulos.

Käyttäjä lisää tekstiä:

Tästä maailma alkoi [ ].

Käyttäjä siirtää kohdistinta ennen aloitusta", järjestelmä siirtyy "aloitettuna" ensimmäisestä segmentistä toiseen.

Tällä tavalla maailma [ ] alkoi.

Käyttäjä lisää tekstiä ikkunan täyttämiseksi. Järjestelmä suurentaa ikkunaa.

Tällä tavalla maailma sellaisena kuin me sen tunnemme [ ]alkoi.

Katso myös

Muistiinpanot

  1. Mark C. Chu-Carroll. « Välipuskurit vai, älä sitoudu köysiin? Arkistoitu 22. lokakuuta 2013 Wayback Machinessa » ScienceBlogs , 2009-02-18. Käytetty 30.01.2013.
  2. Emacs Lisp. 27.13 Puskuriväli  . www.gnu.org. Haettu 18. tammikuuta 2020. Arkistoitu alkuperäisestä 24. joulukuuta 2019.

Linkit