問題タブ [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 が壊れています。修正することはまったく可能ですか?
ループ変数の名前と同じ名前の変数の名前を使用すると、BOOST_FOREACH
混乱します。
問題の原因は理解していますが、これを修正することは可能でしょうか?
それを回避する方法は考えられません(仮想関数などは必要ありません)。
stl - stl と boost を使用して 2 つのベクトルをタプルのベクトルに変換する
私は持っている
私は取得したいです
これは私がこれまでに持っているものです
さらに進む方法がわかりません。1 つの方法は、 http: //www.boost.org/doc/libs/1_52_0/libs/iterator/doc/zip_iterator.html#examples で zip_func としてファンクターを作成することですが、余分なコードを書きたくないので、ラムダを使いたい 何かご意見は?
boost-foreach - コピー不可オブジェクトの ptr_vector を指定した BOOST_FOREACH
私は次のものを持っています:
コンパイルはできますが、リンクしません。BOOST_FOREACHimplicit default copy constructor for X
で必要とされています。
X へのポインターのみを反復処理するにはどうすればよいですか... を使用して、コピー コンストラクターはありませんBOOST_FOREACH
。
ありがとう。
c++ - BOOST_FOREACH と for ループ
の使い方についてアドバイスをいただきたいですBOOST_FOREACH
。
私は、パフォーマンスが非常に重いヘッダーであるという点で、実際には推奨されていないことを読みました。
さらに、ブール値によって駆動される終了条件を実際に持つことはできないため、「break」および「continue」ステートメントの使用を強制します。「break」および「continue」は可能な限り避けるべきであると常に言われてきました。
もちろん、イテレータを直接処理しないという利点があるため、コンテナを反復処理するタスクが容易になります。
あなたはそれについてどう思いますか?
使用する場合、プロジェクトの均一性を保証するために体系的に採用する必要があると思いますか、それとも特定の状況でのみ使用することをお勧めしますか?
c++ - 2 つの STL のようなコンテナー (デカルト積) を反復処理する方法
BOOSTで以下を減らしたい
2 つのループを 1 つの構造 (Boost.Foreach、Boost.Range、Boost.Iterator など) にカプセル化することを意味します。私が見たいのは次のようなものです(これは単なるアイデアであり、私が見たいものとは異なります)
それはどのように行うことができますか?
EDIT:ちなみに、Pythonでは次のように書くことができます
c++ - 複数のコレクションをループしながらイテレータに書き戻す
イテレータを使用して 2 つのコレクションをループし、もう一方を含む (十分に複雑な) アルゴリズムに基づいて一方を変更したいと思います。次の最小限の例を考えてみましょう。
s の間の部分を宣言するにはどうすればよいですか???
(または loop3 のパラメーターを変更します)?
c++ - ブーストforeachを使用して複数のコンテナを反復処理することは可能ですか?
2 つのコンテナーがあり、同じループ内で両方を同時に反復処理する必要があります。ブースト foreach を使用しています。
そのようです:
coords は std::deque です。
targets
そこにもforeach
何とか入れようかな。ドキュメントはノーを示唆しています。
c++ - それ自体がテンプレートであるアイテムでブースト foreach を使用する
をstd::deque< std::pair<int, int> >
使用して繰り返したい がありBOOST_FOREACH
ます。
私は次のことを試しました:
しかし、これを (Visual Studio で) コンパイルすると、次のエラーが発生します。
BOOST_FOREACH
これを使用する正しい方法は何deque
ですか?
c++ - BOOST_FOREACH および cxxtest プラグインでのキャスティングの問題
私は現在、私が使用するプロジェクトに取り組んでいます:
- ブースト ライブラリ v1.39
- Eclipse CDT (Juno) と Cygwin
- CxxTest プラグイン: http://wiki.web-cat.org/WCWiki/EclipsePlugins/CxxTestPlugin
に関する問題に遭遇しましたconst_cast
。私は高低を検索しましたが、私を助けることができる情報源をオンラインで見つけられませんでした. BOOST_FOREACH
テストメソッド内で呼び出すと、問題が発生します。次のエラーが発生し続けます。
const_cast_helper
私は問題の分析を開始し、 const_cast 演算子がランタイム チェックの目的でオーバーロードされていることを発見しました。全体Dereferee::const_cast_helper
として、cxxtest 依存関係の一部である、const_cast 演算子のオーバーロードがあります。
このヘルパーは const_cast 演算子を定義解除します (!)
最後に const_cast 演算子を再導入します。
#define const_cast ::Dereferee::const_cast_helper
const_cast が呼び出されるたびに、このヘルパーの適切なコンストラクターが呼び出されるようにします。コンストラクターは、ポインター、参照、const ポインター、および const 参照を受け入れます。
rvalue_probe
Boost はまた、反復されるコレクションが左辺値または右辺値であるかどうかを確認するためにキャストをいじり、それをコピーしたり式を再計算したりするのを回避します。
コンパイラは、次のように文句を言います。
私の場合、T は boost::unordered_map であり、どういうわけかこのキャストとヘルパーのオーバーロードの組み合わせが壊れています...
それを解決する方法は?
考えられる解決策を調べましたが、実際にそれらを実装する方法がわかりません。C++ の経験があまりありません。テストでこれらのコンパイル時のチェックを行うかどうかは少し気にしません。それを回避できます。したがって、3 つの方向のいずれかのヘルプが最も役立ちます。
ブーストの右辺値チェックを無効にし、BOOST_WORKAROUND と foreach.hpp で定義されたリテラルで遊んでいます。
BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTION BOOST_FOREACH_NO_RVALUE_DETECTION BOOST_FOREACH_NO_CONST_RVALUE_DETECTION BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
これを無効にし
const_cast_helper
ます。テスト プログラム (テスト プロジェクトとは別のプロジェクト) を実行すると、コードがコンパイルされて期待どおりに実行され、const_cast のオーバーロードによって問題が発生しました。このエラーを修正する拡張機能を実装します。でやるべきかどうかはわかりませんが、
const_cast_helper
何rvalue_probe
の役にも立ちませんでした。
template <typename T> const_cast_helper(rvalue_probe<U>* value_to_cast) : cast_value(const_cast<U*>(value_to_cast)) { }
事前にご入力いただきありがとうございます。