問題タブ [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++ - イテレータから取得したポインタ引数を持つC++テンプレート関数でエラーが発生する
タイトルが十分に説明的でなかった場合は申し訳ありませんが、これの何が問題なのかわかりません。
次のメンバー関数内から上記の関数を呼び出すと、次のようになります。
私はいつも得る:
policy.hpp:237: error: no matching function for call to 'findPolicy(boost::ptr_vector<Greedy<guState>, boost::heap_clone_allocator, std::allocator<void*> >&, State*&)
java - 重い反復ではどのようなアプローチをとるべきですか?
私はこの Java webapp (JSP+Struts+Hibernate+MySQL+tomcat6) を手に入れました。現在 20000 人のユーザーがおり、その数は急速に増えています。すべてのユーザーを定期的にランク付けする必要があります。ランキング プロセスには、多くのオブジェクトと休止状態のアクションが含まれ、かなりの負荷がかかります。Java について言えば、残念ながら、すべてのユーザーに対して反復処理を行い、この手順を 1 つずつ適用する必要があります。この方法は、サーバーのリソースを大量に消費します。
一方、これらすべてのアクションを MySQL 側のストアド プロシージャで実行できる可能性があります。コードが完全に混乱し、後で変更するのが面倒になると確信しています。パフォーマンスはこの方法ではるかに向上しますが、ソフトウェア エンジニアリングの原則はこのソリューションをうまく採用しません。
何を指示してるんですか?
c++ - すべての双方向反復子に共通のクラス型、c++
TriangleMesh、PointClouds、Edgesets など、頂点に基づいて幾何学的オブジェクトを実装するクラスがたくさんあります。それらはすべて VertexBasedGeometry から継承します。私は今、それらすべてがその頂点の参照で双方向イテレータを返すようにしたいと考えています。これにより、テンプレート化されていない方法で任意の VertexBasedGeometry の頂点にアクセスできます。さて、私はイテレータにあまり慣れていないので、これはかなり難しいことがわかりました。私の試みは次のようになります:
VertexBasedGeometry から継承する TraingleMesh では、頂点を含む std::vector の begin イテレータを返すことで関数 begin を実装しようとしています。これにより、gcc 4.2 (apple) で次のコンパイラ エラーが発生します。
私の質問は次のとおりです。なぜこれが機能しないのですか。これを機能させるにはどうすればよいですか? イテレータについて詳しく読んでいると、双方向イテレータの共通の型を見つけることができないと少し感じました。そうですか? 一部のクラスでは、頂点が std::vector 以外のコンテナーに格納されている場合があります。他のクラスでは、共通の型に適応させたい (stl に準拠していない) イテレーターが既に提供されています。これを実装する方法についての推奨事項をお待ちしています。
c++ - Boost Single Pass Iterator と Forward Traversal Iterator の違いは何ですか?
New Iterator Concepts 標準提案では、Single Pass Iterator と Forward Traversal Iterator の有用な違いを解読できません。
フォワード トラバーサル テーブルの「++r」行の「アサーション/メモ」は、フォワード トラバーサル イテレータがコピー可能であるのに対し、シングル パス イテレータはコピーできないことを意味しますか?
さらに、default-construct の追加機能によってイテレータ モデルがフォワード トラバーサルになるのはなぜですか? 根拠は何ですか?
boost - ブーストイテレータファサードと dereference() 関数
参照ではなく、実際の値の型のみを逆参照できるイテレータを作成しようとしています。を使用してこれは可能boost::iterator_facade
ですか、それとも address\reference によって返される値が必要ですか?
より具体的に言うと、イテレータは参照の a を返しますstd::pair
。つまり、イテレータvalue_type
はどこにも保存されず、逆参照時にオンザフライで作成されます ( のようにstd::map::iterator
)。
c++ - 並列配列上でのランダムアクセスイテレータの記述
背景
コードのバンドルを含む大規模なアプリケーションで、ストレージメカニズムを変更できません。
stdアルゴリズムとコンテナーの使用を開始できるように、並列配列に格納されている一連の多次元データに対してイテレーターを作成したいと思います。
これを正しく機能させる方法について何かアイデアはありますか?
出力
02020
20
20
20
20
20
20
20
_
_
に変更した後
出力
02010
0
0
0
0
0
0
_
_
boost - ブースト directory_iterator 受信 SIGABRT
ディレクトリを反復するためにboost/filesystemを使用しており、それらをMacOSX + XCode3のZipファイルに追加しています。
私の元のロジックは次のようになります
この関数を返した後、特に directory_iterator のデストラクタが呼び出されたときに問題が発生すると思います。無効なポインタを削除し、SIGABRT を受け取っているようです。以下のようにプログラムがクラッシュすることもあれば、ステップ オーバーを押すとフリーズすることもあります。そして要点は、ループ内で何もしなくても問題が残るということです。つまり、変数が単純に作成され、関数が返される場合です。
詳細については、プログラムがクラッシュしたときのコール スタックは次のようになります。
~dir_itr_imp に入るので、型チェックをパスして正しいデストラクタにたどり着くようです。
directory_iterator で何か問題がありましたか? 誰かがこの問題を経験した場合は、私に知らせてください。
c++ - iterator_facadeと前方宣言をブーストします
イテレータをサポートするカスタムコンテナを作成したいと思います。次のようになります。
次に、このためのイテレータを作成します。
これに伴う問題は次のとおりです。SomeContainer
beforeSomeiIterator
とforwarddeclareを宣言するとSomeIterator
、コンパイラはstbegin()
とend()
メソッドSomeIterator
が不完全な型であると文句を言います。しかし、私がそれを逆にすると、問題は逆になります:SomeContainer
不完全です。
- 両方のクラスを完全にヘッダーのみにし、すべてのメソッドを暗黙的にインライン(ほとんどの場合、数行しか含まない)にして、この問題を解決することは可能ですか?
- そうでない場合、いくつかのメソッドをcppファイルに分解することでそれを解決することは可能ですか?
c++ - boost::iterator_facade<> を使用して、反復子の参照を返しますが、const_iterator の const_ref を返しますか?
こんなクラスがありますが、
value_type
クラスの定数には依存しませんBSTNode
。それが私がそのconst_cast<value_type&>()
部分を保持しなければならなかった理由です。const_iterator
aを返すconst_ref
がiterator
modifiableを返すようにするにはどうすればよいref
ですか? 関連するtypedefは次のとおりです。
そしてノードクラス、