0

私はロープについてのこの論文「ロープ:ひもに代わるもの」を読んでいました

代替テキスト

同紙より図

そして、それが今日のブラウザーがテキストボックスを実装するために使用するデータ構造であるかどうか疑問に思っていました。これにはロープやその他のデータ構造を使用しますか?

ロープはテキストボックス以外の場所で使用されていますか?


私の質問の前のタイトルは、どういうわけか、文字列の「記憶」がどのように発生するかを知りたいという意味でもありました-入力すると、提案が表示されます。今変更しました。

私が知りたいのは、入力時に文字列を格納するために使用されるデータ構造です。char 配列のような単純なものですか、それともロープのような複雑なものですか?

4

3 に答える 3

1

ほとんどの場合、基盤となる OS/ウィンドウ システムによって提供されるテキスト ボックスをそのまま使用します。少なくともほとんどの場合、それはテキスト ボックスの単純な線形配列になると思います。ほとんどの場合、ロープのようなものが実際に意味をなすために必要な量のデータに近い場所を保持することはめったにありません。

于 2010-08-24T02:57:01.120 に答える
0

問題 (単純なケース) は、部分文字列を含むすべての文字列を見つけることです。いつもありふれた作品や文字を検索しているわけではないので、 http://en.wikipedia.org/wiki/N-gramインデックスのようなものだと思います。たとえば、トライグラムの場合:

  1. インデックスを作成する文字列ごとに、3 文字 (トリグラム) のすべての (重複する) サブシーケンスを検索します。
  2. サブシーケンスごとに、それが現れるすべての文字列のリストを保存します。これはインデックスであり、trigram -> 文字列のリストからのマップです。
  3. ユーザーがキーワードを入力すると、そのトリグラムを見つけてインデックスで検索し、対応する文字列のリストの共通部分を返します。

これは、単語を含む可能性のある文字列を返す簡単な方法です。精度を高めるために、部分文字列全体を含む結果に絞り込むことができます。

ブラウザーはこれをさまざまな方法で拡張できます。たとえば、複数の単語を入力すると、各単語を検索して、いずれかを含む URL を返すことができます。

于 2010-08-24T03:03:48.667 に答える
0

プレフィックス マッチング アルゴリズムを使用します。Trie (およびその高度なバージョン) は、最長のプレフィックス マッチを実装するための最良の方法です。

Chrome ソース : http://www.google.com/codesearch/p?hl=en#WT2nGdYBQUk/branches/chrome/chrome/src/cpp/include/chrome/browser/autocomplete/autocomplete.h&q=chromium%20lang:c++ %20textbox&sa=N&cd=4&ct=rc&d=8

NB: 入力したテキストをどのように「記憶」するかという意味だったと思います。

各テキスト ボックスに以前に入力した内容のリストが含まれていて、それをポップ ダウンで表示する方法を意味する場合は、そのテキストが使用されるたびに追加されるリストです。

于 2010-08-24T04:14:32.063 に答える