は、は、私は単純に文字列のコンテナである「スライディングウィンドウ」を必要とするアプリケーションを働いていますコンテナタイプ
Window = ["the", "dog", "is", "hungry"]
アプリケーション・プロセスに大きなテキストファイルと、ウィンドウが追加されますベスト新しい文字列を末尾に置き、最初の要素を削除します。
Window = ["dog", "is", "hungry", now"]
たびにウィンドウが変化するので、それはなり
Window <- Window.AddToEnd("now") and Window.DeleteFirst()
そして、「今」が追加される次の単語であると言う、プロセスは順序が重要な要素の上で実行される(つまり、インデックスは重要です)。
私は文字列のベクトルに行き、両端キューを試しました。 人々が最高だと思うものが私は不思議でしたか?
要約すると、私は、常に新しい要素が追加され、最初の要素が削除されるインデックス付けされた文字列のコンテナが必要です。私はまた、コンテナの多くを繰り返し処理する必要があります。
情報のいくつかの他のビット:
- 文字が容器
- に一度修正されることはありません窓要素は(ポップの外側と論じたようにプッシュする)に変更されることはない
- サイズのウィンドウは実行時まで知りません(ユーザが何かを渡す)
- ウィンドウはサイズを決して変更しません。開始時に初期化されると、アプリケーション全体のサイズにとどまります。
任意の提案を大幅にあなたがstd::deque
を使用することができ、乾杯デビッド
標準のライブラリですぐに利用できる実装はありませんが、実装するのは簡単ですが、リングバッファを使用することもできます。 – Cornstalks
まあ、リストや循環バッファのどちらかがあなたのニーズに合っています。私はリストから始めることを提案するだろう。 – iehrlich
[boost :: circular_buffer](http://www.boost.org/doc/libs/1_64_0/doc/html/circular_buffer.html) – PaulMcKenzie