問題タブ [boost-foreach]
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++ - BOOST_FOREACH/コンパイラのバグに関するヘルプが必要
ブーストまたはコンパイラが最後に責任を負うべきであることは知っていますが、ここには別の説明がありません。msvc 2008 SP1 とブースト 1.43 を使用しています。
次のコード スニペットでは、実行によって3 番目の BOOST_FOREACH ループが終了することはありません
イテレータ コード:
ASM の楽しみ:
イテレータ ハンドルが EBP にキャッシュされ、イテレータ operator++() 関数の呼び出しにもかかわらずインクリメントされないことは簡単にわかります。
Itarator の実装を std::iterator から派生したものに置き換えましたが、問題は解決していないため、これは iterator_facade の障害ではありません。この問題は、msvc 2008 SP1 x86 および amd64 リリース ビルドにのみ存在します。msvc 2008 でのデバッグ ビルド、および msvc 2010 でのデバッグ/リリース ビルドと gcc 4.4 (Linux) は正常に動作します。さらに、BOOST_FOREACH ブロックを正確に 10 回繰り返す必要があります。9回繰り返せばOKです。
BOOST_FOREACH のテンプレート トリック (const auto_any) の使用により、コンパイラはイテレータ ハンドルが定数であると想定し、実際の値を再度読み取ることはないと思います。
私のコードが間違っていると聞いてとてもうれしく思います。それを修正し、BOOST_FOREACH に進みます (BOOST_FOREVER とは対照的に :)。
関連する可能性があります: BOOST_FOREACH が C++ 文字列で時々機能しないのはなぜですか?
編集:
問題を再現する単純化されたプロジェクトを用意しました。テンプレートも、デフォルトのパラメーターも、何もありません。ここから入手してください: http://yabcok.nazwa.pl/ugly3.zip
c++ - 問題ごとにブースト
これはコンパイルできません:エラーC2440:'初期化中':'std :: pair <_Ty1、_Ty2>'から'lp_type&'に変換できません
要素タイプに「、」がある場合、boost docは、typedefを使用するかvarを事前定義できると言っています。しかし、参照を取得したい場合はどうすればよいですか?
c++ - Ptr_VectorよりもFOR_EACHをブーストしますか?
私は現在、Boostライブラリのいくつかを学ぼうとして楽しんでいます。私は現在、将来の宿題プロジェクトになると思うことをやっています(学期はまだ始まっていません)。ただし、この質問は宿題の問題ではなく、ブーストに関するものです。
コード:
BOOST_FOREACHは、上記とまったく同じコードで通常のベクトルを操作するために使用します。ptr_vectorsを使い始めたので、次のエラーが発生します。
error C2440: '=' : cannot convert from 'Bid' to 'Bid *'
ptr_vectorがforeachメソッドからのポインターをどういうわけか覆い隠していると私を信じさせます。
代わりに書くなら
このタイプのエラーが4つ発生します
error C2819: type 'Bid' does not have an overloaded member 'operator ->'
入札はポインタであることがわかっているので、これは最悪です。
どうすればBOOST_FOREACH
適切に反復処理できptr_vectors
ますか?
c++ - BOOST_FOREACHでBOOST_ENUMを列挙する方法は?
誰かがBOOST_FOREACHを使用してBOOST_ENUMを列挙する方法を教えてもらえますか?以下の例は、std :: for_eachで動作するようにしたが、BOOST_FOREACHでは動作しないことを示しています。
サンプルコード:
よろしくお願いします!
編集:回答で述べたように、コードはブーストの最新のコードベースで動作します。
c++ - BoostC++マクロ引数カウントエラー
次のコードでは、次のようになります。
このエラーが発生します:
エラー:マクロ "BOOST_FOREACH"は3つの引数を渡しましたが、2つしかかかりません
私は2つの引数しか渡していないのですが、どうなっているのでしょうか。
c++ - BOOST_FOREACH がコンテナを反復処理している間にコンテナを変更しますか?
BOOST_FOREACH が繰り返し実行されているコンテナーが BOOST_FOREACH スコープ内で変更された場合はどうなりますか?
BOOST_FOREACH は初期状態を「フリーズ」しますか?
c++ - BOOST_FOREACH を使用する場合、ベクター内の最後の要素をテストするにはどうすればよいですか?
私は繰り返し処理するベクトルを持っています。ベクトルの最後の要素は特殊なケースであり、個別にテストしたいと思います。たとえば、私はそのようなことをするかもしれません:
BOOST_FOREACH
イテレータをマクロに置き換えたいと思います。最終要素に対して同様のテストを行うことはできますか?
c++ - BOOST_FOREACH Boost::shared_ptrの反復
私はこのアイテムに似た何かをしています正しいBOOST_FOREACHの使用法?
ただし、返されたリストはboost::shared_ptrでラップされています。BOOST_FOREACHループの前にリストを変数に割り当てないと、リストが一時的なものであるためにリストが破棄されるため、実行時にクラッシュします。
じゃあ後で..
変数「myList」を導入せずに上記を使用できるようにしたいと思います。これは可能ですか?
c++ - Boost 1.46.1、プロパティツリー:サブptreeを受け取るptreeを反復処理する方法は?
まず第一に、私はそれがどのように行われるべきかを理解したと思いますが、私のコードは私が試した方法でコンパイルされません。私は、空のptreeトリックのこの公式の例に基づいて仮定しました。そこに次の行があります:
これは、ptreeからsubptreeを取得することが可能である(または可能である必要がある)ことを示しています。
BOOST_FOREACH
したがって、次のような方法でptreeを反復処理できると想定しました。
しかし、次のエラーが発生します。
エラー1エラーC2440:'初期化中':'std :: pair <_Ty1、_Ty2>'から'const boost :: property_tree :: ptree&'に変換できません
または私がしようとすると
私は得る:
エラー1エラーC2039:'empty_ptree':は'boost::property_tree'のメンバーではありません
では、どうすればよいでしょうか。BoostPtreeを反復処理して、サブPtreeを取得する方法を教えてください。
更新: 私もそのようなコードを試しました
これはコンパイルされ、例外をスローしませんが、何も出力しませんSub data
。このサイクルを維持するだけです。
アップデート2:
うーん...おそらく私のxmlで何かがうまくいかなかった-今私はそのコードで正しい結果を得る。
c++ - BOOST_FOREACHを使用して2つのベクトルを同時に反復するにはどうすればよいですか?
BOOSTFOREACHで以下を複製したい