問題タブ [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.
c++ - iterator_traits でのネストされたポインター型の使用は何ですか?
クラス テンプレートは、std::iterator_traits
ネストされた 5 つの型を定義します: iterator_category
、、、および。libc++ と libstdc++ の両方のヘッダーのソースを参照すると、との多くの使用が見られますが、 (内部)の場合は 1 つだけで、の場合はありません。value_type
difference_type
pointer
reference
<algorithm>
value_type
difference_type
iterator_category
reference
std::iter_swap
pointer
私のアプリケーションは、手作りのプロキシ イテレータとプロキシ参照のペアを使用しています。iterator_facade
参照型をデフォルトから任意の型に構成できるBoostの使用に移行したいのですが、デフォルトT&
のポインタ型にはそうではありませんT*
。pointer
ネストされた型の奥深くに隠された使用法に噛まれるのを避けたいです。
注operator->
: イテレータは、ネストされたメンバーのない組み込み型のプロキシであるため、 (戻り値の型が となる) との互換性は必要ありませんpointer
。
質問: 標準ライブラリには、ネストされた型のpointer
内部にどのようなユース ケースがありiterator_traits
ますか?
c++ - 任意のイテレータをランダム アクセス イテレータに変換するアダプタ
ランダム アクセス イテレータを提供しないコンテナーがあり、そのようなイテレーターの入力を受け取り、コンテナーにランダム アクセス イテレーター インターフェイスを提供するアダプターを作成することが目標です。
少し紛らわしいので、使い方がわかりませんboost::iterator_facade
:-/スタックオーバーフローの例がいくつかありますが、それらの使い方がわかりません( here )
リンク/例は役に立ちます。boost
(私の経験を考えると、それらは消化するのが少し難しいですの例を読みましたboost
c++ - C++ で遅延ジェネレーターを forward_iterator として実装する
MyGenerator は、(おそらく) 整数の有限シーケンスを表し、計算コストが高くなります。したがって、それらをすべて事前に生成してコンテナーに入れたくありません。
それらをすべて印刷するには:
forward_iterator のプロトコルに従う同様のジェネレーターを実装する方法は?
boost::function_input_iteratorは近づいていますが、事前に要素数がわかりません。
c++ - boost::range::detail::any_iterator が boost::zip_iterator とうまく連携しない
次のコードを検討してください。
最適化なしでコンパイルすると期待どおりに動作します (つまり、"1 a\n2 b..." を出力します) が、-O2 (clang-3.6.0 と gcc-4.9.2 の両方を使用) でコンパイルすると、セグメンテーション違反が発生するか、ガベージが生成されます。ブースト 1.56.0) で、何が問題なのかわかりません。
また、IntCharIterator ラッパーが削除されると、コードはどちらの最適化レベルでも期待どおりに機能します。
ここで何が起こっているか知っている人はいますか?
c++ - boost:type_erasure と boost::iterator_facade の間の競合
この非常に単純なプログラムを考えてみましょう:
これはコンパイルに失敗します:
それらのヘッダーファイルを変更したくありません。この問題を回避するにはどうすればよいですか?
c++ - {} は、反復子 (コンテナの std::end() を表す) を期待する関数に渡す有効な引数ですか?
ブースト directory_iterator の例では、再帰的ではないディレクトリ ファイルを一覧表示する方法(この回答を参照) がサンプル コードです。
(p
はタイプboost::filesystem::path
です。)
のドキュメントmake_iterator_range
を見ると、呼び出されているコンストラクターは次のとおりだと思います。
私が正しければ、上記のコード例で渡された 2 番目の引数 は{}
、directory_iterator
.
これは今まで見たことがありません。
end
空のイニシャライザリストからそのようなイテレータを値構築するだけで、イテレータを構築することは可能{}
ですか? (私はこれを適切に表現していますか?)
そのように構築されたイテレータの型が最初のイテレータ ( ) の型と一致しなければならないことを考えると、内部で何が起こっているかを誰かに詳しく説明してもらってもかまいませんdirectory_iterator(p)
。(ここでテンプレートの引数の推定が行われていますか?)
boost - ブースト イテレータを使用したカスタム イテレータ
私は次のようなカスタムデータ構造を持っています:
これらの API を実装する必要があります。ブースト反復子ライブラリを使用してこれらを実装するにはどうすればよいですか?
また、フィルタリングを可能にするために述語を取る必要があるかもしれません
開始するためのいくつかのポインターは非常に役立ちます。明確化の 1 つ: c++98 のみを使用する必要があるため、c++0x コンパイラ フラグは使用できません。したがって、c++11 または c++03 コンパイラ フラグを必要としないソリューションを提案してください。
また、(GraphDM クラスにネストされた) 次のような反復子を設計すると、基本的にデータ構造の詳細が公開されます。イテレータをマップのキー (値ではなく) でのみ反復するようにする方法はありますか? 次に、getFanins() と getFanout() に対して異なるタイプのイテレータを返すことができます。これは、値リストのイテレータになります。