問題タブ [boost-iterators]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2275 参照

c++ - transform_iteratorのコンパイルの問題

こんにちは、

コンパイルの問題を投稿するのは好きではありませんが、これを理解することはできません。このコードの使用:

このコンパイルエラーの取得:

なぜこれが機能しないのか誰かが説明できますか?ブースト1.36.0でVisualStudio7.0を使用しています

ありがとう。

0 投票する
2 に答える
1528 参照

c++ - ブースト イテレータ アダプタでのコンパイラ エラー

ブースト反復子アダプターを使用して、CArray MFC クラスの単純な STL 反復子を作成しようとしています。これは私のコードです:

これは、VC9 コンパイラで正常にコンパイルされます。しかし、これを VC7 でコンパイルしようとすると、次のエラーが発生します。

\include\boost\iterator\iterator_traits.hpp(49): エラー C2039: 'difference_type' : [ Iterator=int ] の 'boost::detail::iterator_traits< Iterator>' のメンバーではありません

\include\boost\mpl\eval_if.hpp(41) : [ Iterator=int ] でコンパイルされたクラス テンプレートのインスタンス化 'boost::iterator_difference' への参照を参照してください

....もう少し....

何が間違っている可能性がありますか?他のヘッダー ファイルをインクルードする必要がありますか? 私はライブラリをブーストするのはかなり新しいです。

0 投票する
1 に答える
8553 参照

c++ - boost::iterator の使用

疎なベクトル クラスを作成しました ( #1#2を参照してください)。

2 種類の反復子を提供したいと思います。

最初のセットである通常の反復子は、設定されているかどうかに関係なく、任意の要素を指すことができます。それらが読み取られた場合は、セット値を返すか、value_type()書き込まれた場合は、要素を作成して左辺値参照を返します。したがって、それらは次のとおりです。

ランダム アクセス トラバーサル イテレータ読み取り可能および書き込み可能なイテレータ

2 番目のセットであるスパース反復子は、セット要素のみを反復処理します。書き込まれる要素を遅延して作成する必要がないため、次のようになります。

ランダム アクセス トラバーサル イテレータおよび読み取り可能書き込み可能​​左辺値イテレータ

また、書き込み不可の両方の const バージョンも必要です。

空白を埋めることはできますが、boost::iterator_adaptor を使用して開始する方法がわかりません。

これが私がこれまでに持っているものです:

また、これは違法ですか?

0 投票する
1 に答える
419 参照

c++ - ポインターのベクトルのゲッターを反復する

逆参照されたときにgetter関数の戻り値を返すイテレータクラスを作成しようとしています。コードは正常に機能します。唯一の問題は、3つではなく1つのテンプレートパラメーターのみを使用してmember_ptr_functorを記述したいということです。これは、メンバー関数の型から引数の型と戻り値を推測できるはずだからです。問題があるのは引数の型だと思います。boost::remove_ptr&を使ってみましたが、コンパイルできませんでした。

ハガイ。

0 投票する
1 に答える
2036 参照

c++ - イテレータをブーストフュージョンマップに入れるにはどうすればよいですか?

のイテレータを取得しようとしていますがboost::fusion::map、何か不足しています。

以下は で動作しboost::fusion::vectorます:

出力:

同様のことをしたいのですfusion::mapが、コンパイルに失敗します:

私はこれらを含めています:

エラー:

0 投票する
3 に答える
9190 参照

c++ - イテレータをスキップする

(iterator begin, iterator end)ペアを取る関数に渡したい値のシーケンスがあります。ただし、元のシーケンスの1つおきの要素のみを処理する必要があります。

Standard-Lib / Boostを使用して、元のシーケンスを渡すことができるイテレーターファサードを作成するための優れた方法はありますか?このような単純なものがすでにブーストイテレータまたは範囲ライブラリにあると思いましたが、何も見つかりませんでした。

それとも、これを行うための別の完全に明白な方法がありませんか?もちろん、値を別のシーケンスにコピーするオプションが常にあることはわかっていますが、それは私がやりたいことではありません。

編集:私は知ってfilter_iteratorいますが、それは値をフィルタリングします-それは反復の進行方法を変更しません。

0 投票する
3 に答える
1356 参照

c++ - C++ イテレータを使用してファイルからリストを読み取りますか?

ファイルから要素のリストを読み取り/逆シリアル化しようとしています(そして、それらのいくつかを除外します)。この目的でイテレータを使用するのは便利な方法ですか?

私の現在の試みは

これはメモリの割り当てを適切に解除しません (たとえば、readNew は新しい Elem へのポインタを返します)。これを行う正しい方法は何ですか? また、そのようなイテレータを実際にどのように使用するのでしょうか?どのように終了を決定できますか? または、イテレータを使用するよりも良いアプローチはありますか?

0 投票する
3 に答える
855 参照

c++ - ブーストでは、何らかの方法で std::string としてキャストされた関数にブースト イテレータを渡す方法

次のコードの最後にあるコメントとして特定の質問を参照してください。

0 投票する
1 に答える
272 参照

c++ - ブースト:画像領域を反復処理します

所有していない画像があり、隣接するモノクロピクセルがあり、現在、ダムポインタインクリメントで反復しています。

現在、2D領域を反復処理する必要があるため、効率的で記述しやすい反復子を提供するための最良の方法を考えています。

forward_iteratorだけが必要です。10x10の画像があり、左上の4x3の領域で反復する場合は、次の要素で反復します。

私には2つの選択肢があります:

  • 手で書くboost::iterator_facade
  • を使用しますboost::range_iterator。これにより、配列に対するイテレータが得られ、その動作を次のように変更します。boost::iterator_adaptor

何が一番いいと思いますか?

0 投票する
1 に答える
145 参照

c++ - Boost双方向イテレータが書き込み不可の問題

Boost Iterator を使用して双方向イテレータを作成しようとしています。ここのドキュメントで提案されているように、いくつかの機能を実装しました。

実装する関数が純粋仮想として宣言されている親クラスがあります (ポリモーフィック イテレータが必要です)。今のところ、関数が実装されている継承クラスが 1 つあります。さらに、boost::bidirectional_traversal_tag を使用します。

dereference() 関数は、継承されたクラスで次のように実装されます。

次の例のように値を読み取るには、完全に機能します。

( isEndReached() は個人用関数です)。問題は、次のコードが機能しないことです。

g++ は次のエラーを返します。

なにが問題ですか ?

ありがとう