いくつかのレガシーコードを組み込んだ2パスアルゴリズムを作成しようとしています。私は特定のコンテナを2回、順番に1回、逆の順に1回移動したい。明らかに、私の最初の考えはiterator
とreverse_iterator
を使用することでしたが、私が使用しているコンテナクラスのデザイナーは、コンテナのためにreverse_iterator
を定義するのには合っていませんでした(reverse_iterators
ここではiterators
のように参照解除できません)。私はすでにreverse_iterator
が必要なアルゴリズムを持っています。C++ reverse_iterator代替方法
アルゴリズムの最初の部分で最初のパスのイテレーターを使用し、アルゴリズムpush_front
を新しいコンテナーに入れ、新しいコンテナーを反復処理することを考えました。これは私のアプリケーションでは重要ではないメモリを占有しますが、C++でreverse_iterators
のクリーンな代替手段があるのでしょうか?あるいは、転送をiterators
だけ使ってアルゴリズムを修正する必要がありますか?
ありがとう、iteratorが双方向であるように見えます。クラスは実際に 'std :: reverse_iterator'を使って' reverse_iterator'を実装していますが、それを使用しようとすると逆参照するとコンパイラエラーが発生します。 – Zeke
@ Zeke:使用しているコードと正確なコンパイラエラーを投稿する必要があります。さもなければ、それは一種の助けが難しいです。 :( –
@James:十分な公正私は '--it'のアイデアが働いていると思いますが、' for'ループ条件の提案はありますか? 'for(--it; it != end; --it) '最後の項目を見逃してしまいます。ループ本体の終了後に条件を変更するか、ループコードをインクルードする必要がありますか? – Zeke