gpt4 book ai didi

c++ - 为文本编辑控件实现缓冲区的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:32 29 4
gpt4 key购买 nike

所以我正在制作自定义编辑控件。为了跟踪编辑控件的内容,我使用了动态分配的 char 数组。

  • 现在,我知道我需要在数组的中间插入某些情况下,例如当用户点击特定的观点。所以,我在想,我可以使用而不是字符数组std::vector,所以我可以使用 .insert 函数,而且不必太关心内存管理。
  • 我也在考虑直接将输入流存储到一个词的数组/vector (不保持连续的缓冲区),因为我这样做的全部目的是实现语法突出显示。

哪种处理方法更好?为什么?

最佳答案

对于当今计算机的文本缓冲区,您确实可以只使用一个连续的缓冲区(例如 vector ),因为 CPU 足够快以缩短插入时间(一个 o(n) 操作与这个天真的方法)仍然是一个可行的选择。

在过去,当计算机速度慢数千倍时,一种常见的简单方法是将文本保存在缓冲区中,但有一个与光标位置对应的“孔”,以便插入 o(1) 操作并在光标在文本中移动时将字符从孔的一侧移动到另一侧(基本上使光标移动成为 o(k) 操作,其中 k 是跳过的字符数)。

对于为程序员设计的编辑器,文本将被 segmentation 为逻辑行,因此使用基于行指针数组的方法似乎是合适的。即使这会使一些跨行操作有些烦人,一些基于行的操作也会变得更容易......显示中的行号成为一个微不足道的问题,特别是如果你不需要实现换行(无论如何代码都很糟糕)通过截断和水平滚动来代替。

关于c++ - 为文本编辑控件实现缓冲区的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8102962/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com