問題タブ [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 投票する
0 に答える
234 参照

c++ - BOOST_FOREACH が壊れています。修正することはまったく可能ですか?

ループ変数の名前と同じ名前の変数の名前を使用すると、BOOST_FOREACH混乱します。

問題の原因は理解していますが、これを修正することは可能でしょうか?
それを回避する方法は考えられません(仮想関数などは必要ありません)。

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

stl - stl と boost を使用して 2 つのベクトルをタプルのベクトルに変換する

私は持っている

私は取得したいです

これは私がこれまでに持っているものです

さらに進む方法がわかりません。1 つの方法は、 http: //www.boost.org/doc/libs/1_52_0/libs/iterator/doc/zip_iterator.html#examples で zip_func としてファンクターを作成することですが、余分なコードを書きたくないので、ラムダを使いたい 何かご意見は?

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

boost-foreach - コピー不可オブジェクトの ptr_vector を指定した BOOST_FOREACH

私は次のものを持っています:

コンパイルはできますが、リンクしません。BOOST_FOREACHimplicit default copy constructor for Xで必要とされています。

X へのポインターのみを反復処理するにはどうすればよいですか... を使用して、コピー コンストラクターはありませんBOOST_FOREACH

ありがとう。

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

c++ - BOOST_FOREACH と for ループ

の使い方についてアドバイスをいただきたいですBOOST_FOREACH

私は、パフォーマンスが非常に重いヘッダーであるという点で、実際には推奨されていないことを読みました。

さらに、ブール値によって駆動される終了条件を実際に持つことはできないため、「break」および「continue」ステートメントの使用を強制します。「break」および「continue」は可能な限り避けるべきであると常に言われてきました。

もちろん、イテレータを直接処理しないという利点があるため、コンテナを反復処理するタスクが容易になります。

あなたはそれについてどう思いますか?

使用する場合、プロジェクトの均一性を保証するために体系的に採用する必要があると思いますか、それとも特定の状況でのみ使用することをお勧めしますか?

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

c++ - 2 つの STL のようなコンテナー (デカルト積) を反復処理する方法

BOOSTで以下を減らしたい

2 つのループを 1 つの構造 (Boost.Foreach、Boost.Range、Boost.Iterator など) にカプセル化することを意味します。私が見たいのは次のようなものです(これは単なるアイデアであり、私が見たいものとは異なります)

それはどのように行うことができますか?

EDIT:ちなみに、Pythonでは次のように書くことができます

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

c++ - 複数のコレクションをループしながらイテレータに書き戻す

イテレータを使用して 2 つのコレクションをループし、もう一方を含む (十分に複雑な) アルゴリズムに基づいて一方を変更したいと思います。次の最小限の例を考えてみましょう。

s の間の部分を宣言するにはどうすればよいですか???(または loop3 のパラメーターを変更します)?

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

c++ - ブーストforeachを使用して複数のコンテナを反復処理することは可能ですか?

2 つのコンテナーがあり、同じループ内で両方を同時に反復処理する必要があります。ブースト foreach を使用しています。

そのようです:

coords は std::deque です。

targetsそこにもforeach何とか入れようかな。ドキュメントはノーを示唆しています。

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

c++ - それ自体がテンプレートであるアイテムでブースト foreach を使用する

std::deque< std::pair<int, int> >使用して繰り返したい がありBOOST_FOREACHます。

私は次のことを試しました:

しかし、これを (Visual Studio で) コンパイルすると、次のエラーが発生します。

BOOST_FOREACHこれを使用する正しい方法は何dequeですか?

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

c++ - BOOST_FOREACH および cxxtest プラグインでのキャスティングの問題

私は現在、私が使用するプロジェクトに取り組んでいます:

に関する問題に遭遇しました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 参照を受け入れます。

ソースはこちら: https://github.com/web-cat/dereferee-with-cxxtest/blob/master/Dereferee/include/dereferee/const_cast.h

rvalue_probe

Boost はまた、反復されるコレクションが左辺値または右辺値であるかどうかを確認するためにキャストをいじり、それをコピーしたり式を再計算したりするのを回避します。

コンパイラは、次のように文句を言います。

私の場合、T は boost::unordered_map であり、どういうわけかこのキャストとヘルパーのオーバーロードの組み合わせが壊れています...

それを解決する方法は?

考えられる解決策を調べましたが、実際にそれらを実装する方法がわかりません。C++ の経験があまりありません。テストでこれらのコンパイル時のチェックを行うかどうかは少し気にしません。それを回避できます。したがって、3 つの方向のいずれかのヘルプが最も役立ちます。

  1. ブーストの右辺値チェックを無効にし、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

  2. これを無効にしconst_cast_helperます。テスト プログラム (テスト プロジェクトとは別のプロジェクト) を実行すると、コードがコンパイルされて期待どおりに実行され、const_cast のオーバーロードによって問題が発生しました。

  3. このエラーを修正する拡張機能を実装します。でやるべきかどうかはわかりませんが、const_cast_helperrvalue_probeの役にも立ちませんでした。

template <typename T> const_cast_helper(rvalue_probe<U>* value_to_cast) : cast_value(const_cast<U*>(value_to_cast)) { }

事前にご入力いただきありがとうございます。