我正在阅读有关绳索的论文“绳索:字符串的替代方案”
[来自同一篇论文的图]
我想知道这是否是当今浏览器用于实现文本框的数据结构。我们是否为此使用绳索或其他一些数据结构?
除了文本框之外,还有其他地方使用绳索吗?
我问题的前一个标题不知何故也意味着我想知道字符串“记住”是如何发生的——当我输入时,我会得到建议。我现在已经改变了。
我想知道的是当我键入它时使用什么数据结构来存储字符串。它是像 char 数组这样简单的东西还是像绳子这样复杂的东西?
我正在阅读有关绳索的论文“绳索:字符串的替代方案”
[来自同一篇论文的图]
我想知道这是否是当今浏览器用于实现文本框的数据结构。我们是否为此使用绳索或其他一些数据结构?
除了文本框之外,还有其他地方使用绳索吗?
我问题的前一个标题不知何故也意味着我想知道字符串“记住”是如何发生的——当我输入时,我会得到建议。我现在已经改变了。
我想知道的是当我键入它时使用什么数据结构来存储字符串。它是像 char 数组这样简单的东西还是像绳子这样复杂的东西?
很可能只使用底层操作系统/窗口系统提供的任何文本框。我猜至少在大多数情况下,这将是一个用于文本框的简单线性数组——大多数情况下很少会保存接近像绳子这样的东西真正有意义所需的数据量。
问题(在一个简单的情况下)是找到所有包含一些子字符串的字符串。由于它并不总是搜索常见的作品甚至字母,我的猜测是某种http://en.wikipedia.org/wiki/N-gram索引。例如,对于三元组:
这是返回可能包含该单词的字符串的一种快速方法。为了更精确,可以将结果过滤到包含整个子字符串的结果。
浏览器可以通过多种方式增强这一点,例如,如果输入了多个单词,它们可以搜索每个单词并返回包含其中任何一个的 URL。
他们使用前缀匹配算法。Trie(及其高级版本)是实现最长前缀匹配的最佳方式。
注意:我假设您的意思是他们在您键入时如何“记住”文本。
如果您的意思是每个文本框如何包含您之前键入的内容的列表并在弹出窗口中显示它 - 每次您“提交”使用该文本时都会附加一个列表。