我最近了解了GapBuffer,并尝试将其作为编辑器的后端实现。但是,在完成GapBuffer的基本功能之后,我无法弄清楚如何有效地渲染GapBuffer。
如果我通过迭代不在间隙中的每个字符来渲染GapBuffer,那么它将是 O(n)操作( n 是字符数)。但是GapBuffer的目的是降低在光标附近插入和删除字符的分摊复杂度,几乎是 O(1)。如果每次插入/删除都会触发渲染,那么无论如何它都将是 O(n)。
如果有掉色或着色,那么至少还需要 O(n)。
有没有什么技巧可以更快地完成GapBuffer的渲染?或 O(n)在完整编辑器中插入/删除的最佳性能?
我正在使用C#,并尝试将GapBuffer渲染到GUI前端。但是如果在终端字体端有一些技巧可以做到这一点,那么这也很好。