問題タブ [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.

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

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

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

c++ - 問題ごとにブースト

これはコンパイルできません:エラーC2440:'初期化中':'std :: pair <_Ty1、_Ty2>'から'lp_type&'に変換できません

要素タイプに「、」がある場合、boost docは、typedefを使用するかvarを事前定義できると言っています。しかし、参照を取得したい場合はどうすればよいですか?

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

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ますか?

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

c++ - BOOST_FOREACHでBOOST_ENUMを列挙する方法は?

誰かがBOOST_FOREACHを使用してBOOST_ENUMを列挙する方法を教えてもらえますか?以下の例は、std :: for_eachで動作するようにしたが、BOOST_FOREACHでは動作しないことを示しています。

サンプルコード:

よろしくお願いします!

編集:回答で述べたように、コードはブーストの最新のコードベースで動作します。

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

c++ - BoostC++マクロ引数カウントエラー

次のコードでは、次のようになります。

このエラーが発生します:

エラー:マクロ "BOOST_FOREACH"は3つの引数を渡しましたが、2つしかかかりません

私は2つの引数しか渡していないのですが、どうなっているのでしょうか。

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

c++ - BOOST_FOREACH がコンテナを反復処理している間にコンテナを変更しますか?

BOOST_FOREACH が繰り返し実行されているコンテナーが BOOST_FOREACH スコープ内で変更された場合はどうなりますか?

BOOST_FOREACH は初期状態を「フリーズ」しますか?

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

c++ - BOOST_FOREACH を使用する場合、ベクター内の最後の要素をテストするにはどうすればよいですか?

私は繰り返し処理するベクトルを持っています。ベクトルの最後の要素は特殊なケースであり、個別にテストしたいと思います。たとえば、私はそのようなことをするかもしれません:

BOOST_FOREACHイテレータをマクロに置き換えたいと思います。最終要素に対して同様のテストを行うことはできますか?

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

c++ - BOOST_FOREACH Boost::shared_ptrの反復

私はこのアイテムに似た何かをしています正しいBOOST_FOREACHの使用法?

ただし、返されたリストはboost::shared_ptrでラップされています。BOOST_FOREACHループの前にリストを変数に割り当てないと、リストが一時的なものであるためにリストが破棄されるため、実行時にクラッシュします。

じゃあ後で..

変数「myList」を導入せずに上記を使用できるようにしたいと思います。これは可能ですか?

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

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で何かがうまくいかなかった-今私はそのコードで正しい結果を得る。

0 投票する
4 に答える
22401 参照

c++ - BOOST_FOREACHを使用して2つのベクトルを同時に反復するにはどうすればよいですか?

BOOSTFOREACHで以下を複製したい