2017-04-10 4 views
-1

これに続くhereC++ dequeのような非連続的なコンテナのイテレータは、次の要素を見つける方法

不連続でリンクされていないコンテナが実際にこの要素の直後に来ることが保証されていないので、次の要素を見つける場所を実際に知っているのだろうか?デキストの最初のxチャンクがこの開始点にあり、次のチャンクがそこから開始しているという追加のテーブルがありますか?

+2

イテレータクラスは、次の要素の検索方法を知るのに十分な情報を保持しています。例えば、dequeイテレータが動作する1つの方法は、現在の "ブロック"へのポインタを保持することと、ブロック内の項目を選択するインデックスを保持することです。 –

+0

一般に、イテレータはコンテナ(またはその一部)を参照できるため、コンテナに関する内部情報にアクセスできます。 –

+0

@ M.M私の質問は、ブロックがどこにあるかを知る方法を説明することを目的としていました。 – chrise

答えて

0

デッキの内部実装は、基本的にチャンク(ベクトル)のダブルエンドキューであるため、コンテナは要素に直接アクセスするために必要な情報を内部的に保持します。各チャンクには要素がインデックスされ、一度チャンクがいっぱいになると、別のチャンクが追加されてインデックスの整合性が維持され、コンテナクラスはアクセスを提供するために必要な情報を保持して正しいチャンクを探し出します。あなたはすべてのあなたが求める知識とあなたが求めるものよりさらに提供するだろう、ここで素晴らしい記事読むことができます

:両端キューの簡単な実装を見ても https://www.codeproject.com/Articles/5425/An-In-Depth-Study-of-the-STL-Deque-Container

を、あなたは上の受け入れ答えを通過することができますスタックオーバーフロー What really is a deque in STL?

関連する問題