กลับไปหน้าบทความ

อ่าน 1 นาที

บัฟเฟอร์ช่องว่าง

ใน วิทยาการคอมพิวเตอร์ บัฟเฟอร์ ช่องว่าง (Gap buffer ) คือ อาร์เรย์แบบไดนามิก ที่ช่วยให้การแทรกและการลบข้อมูลมีประสิทธิภาพมากขึ้น...

บัฟเฟอร์ช่องว่าง

ในวิทยาการคอมพิวเตอร์บัฟเฟอร์ช่องว่าง (Gap buffer ) คืออาร์เรย์แบบไดนามิกที่ช่วยให้การแทรกและการลบข้อมูลมีประสิทธิภาพมากขึ้น โดยข้อมูลที่อยู่ใกล้กันจะกระจุกตัวอยู่บริเวณเดียวกัน บัฟเฟอร์ช่องว่างพบได้บ่อยในโปรแกรมแก้ไขข้อความ โดยเฉพาะอย่างยิ่ง ในกรณีที่การเปลี่ยนแปลงข้อความส่วนใหญ่เกิดขึ้นที่หรือใกล้ตำแหน่งปัจจุบันของเคอร์เซอร์ข้อความจะถูกจัดเก็บไว้ในบัฟเฟอร์ขนาดใหญ่ในสองส่วนที่ต่อเนื่องกัน โดยมีช่องว่างอยู่ระหว่างกันเพื่อแทรกข้อความใหม่ การเลื่อนเคอร์เซอร์จะเกี่ยวข้องกับการคัดลอกข้อความจากด้านหนึ่งของช่องว่างไปยังอีกด้านหนึ่ง (บางครั้งการคัดลอกจะถูกเลื่อนออกไปจนกว่าจะมีการดำเนินการถัดไปที่เปลี่ยนแปลงข้อความ) การแทรกจะเพิ่มข้อความใหม่ที่ส่วนท้ายของส่วนแรก ส่วนการลบจะลบข้อความนั้นออก

ข้อความในบัฟเฟอร์ช่องว่างจะถูกแสดงเป็นสตริง สองสตริง ซึ่งใช้พื้นที่เพิ่มเติมเพียงเล็กน้อย และสามารถค้นหาและแสดงผลได้อย่างรวดเร็ว เมื่อเทียบกับโครงสร้างข้อมูล ที่ซับซ้อนกว่า เช่นลิสต์เชื่อมโยงอย่างไรก็ตาม การดำเนินการในตำแหน่งต่างๆ ในข้อความและการดำเนินการที่เติมช่องว่าง (ซึ่งต้องสร้างช่องว่างใหม่) อาจต้องคัดลอกข้อความส่วนใหญ่ ซึ่งไม่มีประสิทธิภาพอย่างยิ่งสำหรับไฟล์ขนาดใหญ่ การใช้บัฟเฟอร์ช่องว่างขึ้นอยู่กับสมมติฐานที่ว่าการคัดลอกซ้ำดังกล่าวเกิดขึ้นไม่บ่อยนักจนสามารถชดเชย ต้นทุนได้ ด้วยการดำเนินการราคาถูกที่เกิดขึ้นบ่อยกว่า ทำให้บัฟเฟอร์ช่องว่างเป็นทางเลือกที่ง่ายกว่าสำหรับ การ ใช้เชือกในโปรแกรมแก้ไขข้อความ[ 1 ]เช่นEmacs [ 2 ]

ตัวอย่าง

ด้านล่างนี้คือตัวอย่างการดำเนินการกับช่องว่างบัฟเฟอร์ ช่องว่างนี้แสดงด้วยพื้นที่ว่างระหว่างวงเล็บเหลี่ยม การแสดงแบบนี้อาจทำให้เข้าใจผิดเล็กน้อย: ในการใช้งานทั่วไป จุดปลายของช่องว่างจะถูกติดตามโดยใช้ตัวชี้หรือดัชนีอาร์เรย์ และเนื้อหาภายในช่องว่างจะถูกละเลย ซึ่งช่วยให้สามารถลบข้อมูลได้โดยการปรับตัวชี้โดยไม่ต้องเปลี่ยนแปลงข้อความในบัฟเฟอร์ เป็นต้น

สถานะเริ่มต้น:

นี่คือทางออก 

ผู้ใช้ป้อนข้อความใหม่:

นี่คือจุดเริ่มต้นของโลก 

ผู้ใช้เลื่อนเคอร์เซอร์ไปที่ตำแหน่งก่อนคำว่า "เริ่ม" ระบบจะย้ายคำว่า "เริ่มแล้ว" จากบัฟเฟอร์แรกไปยังบัฟเฟอร์ที่สอง

นี่คือจุดเริ่มต้นของโลก [ ] 

ผู้ใช้เพิ่มข้อความลงในช่องว่าง ระบบจะสร้างช่องว่างใหม่:

นี่คือจุดเริ่มต้นของโลกอย่างที่เรารู้จักกันในปัจจุบัน 

ดูเพิ่มเติม

  • การนำไปใช้ในภาษาซี
  • ภาพรวมโดยย่อและตัวอย่างโค้ด C++
  • การใช้บัฟเฟอร์ช่องว่างในโปรแกรมแก้ไขข้อความรุ่นแรก (เขียนขึ้นครั้งแรกในช่วงระหว่างปี 1969 ถึง 1971)
  • ข้อมูลเกี่ยวกับบัฟเฟอร์ช่องว่างของ Emacs (เอกสารอ้างอิงบัฟเฟอร์ช่องว่างของ Emacs)
  • Flexichain: ลำดับที่แก้ไขได้และการนำไปใช้ในรูปแบบบัฟเฟอร์ช่องว่าง
  • การเปรียบเทียบข้อความ: แผ่นกันกระแทกช่องว่าง vs เชือก
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Gap_buffer&oldid=1346098132 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ บัฟเฟอร์ช่องว่าง

ใน วิทยาการคอมพิวเตอร์ บัฟเฟอร์ ช่องว่าง (Gap buffer ) คือ อาร์เรย์แบบไดนามิก ที่ช่วยให้การแทรกและการลบข้อมูลมีประสิทธิภาพมากขึ้น...

ตัวอย่าง

ด้านล่างนี้คือตัวอย่างการดำเนินการกับช่องว่างบัฟเฟอร์ ช่องว่างนี้แสดงด้วยพื้นที่ว่างระหว่างวงเล็บเหลี่ยม การแสดงแบบนี้อาจทำให้เข้าใจผิดเล็กน้อย: ในการใช้งานทั่วไป จุดปลายของช่องว่างจะถูกติดตามโดยใช้ ตัวชี้ หรือดัชนีอาร์เรย์ และเนื้อหาภายในช่องว่างจะถูกละเลย...

ดูเพิ่มเติม

อาร์เรย์แบบไดนามิก คือกรณีพิเศษของบัฟเฟอร์แบบมีช่องว่าง โดยช่องว่างจะอยู่ด้านท้ายเสมอ Zipper (โครงสร้างข้อมูล) เป็นการขยายแนวคิดของ gap buffer รายการเชื่อมโยง บัฟเฟอร์วงกลม เชือก (โครงสร้างข้อมูล) ตารางชิ้นส่วน - โครงสร้างข้อมูลที่ใช้โดย Bravo และ Microsoft...

ลิงก์ภายนอก

การนำไปใช้ในภาษาซี ภาพรวมโดยย่อและตัวอย่างโค้ด C++ การใช้บัฟเฟอร์ช่องว่างในโปรแกรมแก้ไขข้อความรุ่นแรก (เขียนขึ้นครั้งแรกในช่วงระหว่างปี 1969 ถึง 1971) ข้อมูลเกี่ยวกับบัฟเฟอร์ช่องว่างของ Emacs (เอกสารอ้างอิงบัฟเฟอร์ช่องว่างของ Emacs) Flexichain:...