問題タブ [boost-range]

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 に答える
3267 参照

c++ - boost :: any_rangeを使用する利点は何ですか?

使用する利点は何boost::any_rangeですか?次に例を示します。

ただし、ForwardRangeの概念を満たすテンプレートパラメータを使用すると、より効率的な同じ機能を実現できます。

したがって、any_rangeを使用する価値があるシナリオを探しています。多分私は何かが欠けています。

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

c++ - ブースト範囲ライブラリは、次の C++ 標準の一部になる予定ですか?

コードで範囲ベースのアルゴリズムを使用できるかどうかを判断しようとしています。C++ 標準の一部である可能性が高い場合は、新しいコードでブーストから使用できます。イテレーターよりもはるかに優れているように見えますが、他のユーザーがプロジェクトをレビューして貢献するのが難しくなる可能性があります。ここの論文のリストには見つかりませんでした。http://www.meetingcpp.com/

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

c++ - ディレクトリ反復子範囲でブースト範囲アダプターを使用する

編集:ジョナサンの回答に基づいて、質問の下にいくつかの解決策を追加しました

特定のディレクトリに特定の名前パターンを持つ通常のファイルのリストが必要です。boost.filesystem (boost 1.53)から例の 1 つを取得し、それを変更しました。ここに私が基本的に欲しいものの実用的なバージョンがあります:

これにより、 で終わるすべてのファイルのエントリ.datがディレクトリ エントリのリストに追加されます。後でさらにパターン マッチングが必要です。次に、範囲で同じことをしようとしましたが、失敗しました。タスクを単純にすべてのディレクトリ エントリをコピーするように減らしましたが、これもコンパイルされません。

(boost.filesystemのtut3.cpp)ので、このように書きました

directory_iterator::value_type は directory_entry です

そのコピーが範囲を反復処理し、エントリを取得してリストに保存できるようにします。ただし、gcc から多くのエラー メッセージが表示されます。

関連する行を実際にフィルターで除外することはできませんでしたが、範囲アダプターを使用してファイルをフィルター処理することは可能だと思います (結局のところ、範囲をコピーしたいだけではありません)。私の印象では、どこかdatFiles.begin()でコピー アルゴリズムが必要とする概念を満たしていないということです。


私の解決策のいくつか

ジョナサンの答えに基づいて、私が思いついたソリューション(フィルタリングを含む)のいくつかを次に示します。

グローバル述語関数の使用bool isDatFile(const path& p):

でも、私はローカル関数の方が好きだったので、それを試してみました。これは、ディレクトリエントリが通常のファイルであるかどうかを確認するだけです。is_regular_fileオーバーロードされているため、静的キャストが必要でした:

範囲アダプターで正しい拡張子を確認するのも少し大変だったので、ローカル関数を追加しました。

最後に、バインドを使用した「ワンライナー」:

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

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

BOOSTで以下を減らしたい

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

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

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

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

c++ - c++: バイナリ関数でブースト範囲変換アダプターを使用する

2 つの std::vectors x と y とバイナリ関数 F があるとします。z の i 番目の要素が F をx と y の i 番目の要素。とりあえず使ってる

もちろん、これには z のメモリ割り当てが必要です。ただし、私の目標は、このメモリ割り当てを回避し、boost::adaptors::transformed が単項関数で行うのと同様に、変換を遅延評価することです。つまり、z の型は、boost::range の型になります。これを行う簡単な方法はありますか、それとも独自の範囲クラスを作成する必要がありますか? 前もって感謝します!

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

c++ - C++ インターフェイスで Boost.Range を使用する

私は多態的なインターフェースを持っています

両方の範囲の要素は同じ型 (例: ) ですが、 byと by によってint返される型は異なります。たとえば、一方が aで、もう一方が aです。インターフェイスには、単一のタイプが必要です。my_range()some_range()filtered counting rangetransformed filtered counting rangeRange

使用してみましboost::any_rangeたが、パフォーマンスが大幅に低下します。vector範囲要素を a にコピーして、代わりにベクトルを返す必要は避けたいと思います。

any_rangeコピーの代替手段はありますか?

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

visual-c++ - ブースト文字列アルゴリズム ライブラリで MFC CString を使用する方法

予備的な注意: string_algo は問題なく動作しstd::wstring、string_algo のアルゴリズムが必要な場合は、最初に CString オブジェクトを std::wstring に変換できます (そして変換します)。ただし、CString オブジェクトをドロップできれば、非常に便利です。既存のコードとの統合がはるかに簡単になります。

私がしたいこと:

ここで提案されboost/range/mfc.hppているように、 Boost.Range を MFC に適合させるために追加で含めようとしました。(私はこのヘッダーをよく見ていませんが、CString に対しては何もせず、コレクション クラスに対してのみ行うようです。)

Visual Studio 2005 で 1.44.0 をブースト

テスト コードは次のようになります。

私が得るエラーは次のようになります: