問題タブ [boost-iterators]
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++ - C++ BOOST ForEach vs カスタム定義マクロ
BOOST の ForEach と独自のカスタム #define マクロを使用してコンテナーを反復処理することの違いは何ですか??
私の:
どちらの方法が優れているのか、その理由を教えてください。
c++ - ストリームを逆方向に繰り返す
の内容を逆std::find_if
にトラバースするために使用したいと思います。これには、またはからstd::streambuf
を構築することが含まれます。残念ながら、以下のコード サンプルに示すように、これを実行しようとすると、コンパイル エラーが発生します。どうすればこれを機能させることができますか? 必要に応じて、Boost を使用したソリューションが最適です。std::reverse_iterator
std::istream_iterator
std::istreambuf_iterator
によって報告されたコンパイル エラーは次のg++-4.8.1
とおりです。
ご協力いただきありがとうございます!
c++ - Incrementable 型で boost count_iterator を使用する
で Incrementable 型を使用しようとしていboost::counting_iterator
ます。
boost::counting_iterator
ドキュメントによると、反復子は Incrementable 型、つまり CopyConstructible、Assignable、PreIncrementable、および EqualityComparable の型で機能します。
私の増分可能なタイプ:
これはコンパイルに失敗します:
エラー:
次のいずれかのために iterator_category を実装する必要があると思います。
- Incrementable 型のcounting_iterator、
- または、エラーが示すように、私の Incrementable 型の場合 (これは意味がありますか?私の Incrementable 型はイテレータではありません)。
ドキュメント (このトピックは完全に省略されています) からもどちらも明確ではなく、ライブラリの他の部分でそれに関する情報を見つけることができません。
boost::detail
そこで、名前空間に次を追加しました。
これで、すべてがコンパイルされ、期待どおりに動作します。それでも、ライブラリがこのように使用されることを意図していたかどうかは本当に疑わしい.
これを実装する適切な/クリーンな方法を知っている人はいますか?
Steve Jessop の提案:専門化std::numeric_limits
も機能します:
これがインクリメンタル型に対して正しいことかどうかはまだわかりません。
c++ - 3 つの配列から 5 つの最大のトップ番号を見つけるためのエレガントなコード
C# プログラマーが LINQ を使用して 3 つの異なる配列から上位 5 つの数値を抽出する方法を示しているブログを読みました。
私は C++ で同じことをしようとしましたが、ベクトルと並べ替えを使用して次の 5 行のコードだけを書きました。出力は88 89 110 888 921
期待どおりです。
しかし、質問は、より良い解決策がありますか?
boost - boost::multi_index コンテナのイテレータ機能の射影の複雑さ
boost::multi_index ライブラリ内のイテレータの射影の複雑さについて何か知っている人はいますか? ドキュメントはここboost::multi_index project of iteratorsにありますが、操作の複雑さについては述べていません。
基本的な考え方は、インデックス内のオブジェクトへの反復子を取得し、これを 2 番目のインデックスに射影して、2 番目のインデックス内の同じオブジェクトへの反復子を取得できるというものです。これが O(1) 操作の場合、効率的に 2 つのインデックスを維持できます。1 つは高速で検索可能で、もう 1 つは低速です。私が理解しているように、反復子の射影により、インデックス内でより高速に検索されるオブジェクトを見つけて、それを検索速度の遅いインデックスに射影することができます。
イテレータの射影のための単純な O(1) ルックアップなのか、それとも 2 番目のインデックスで検索操作を効果的に開始するだけなのか、したがって射影先の特定のインデックスに依存して遅くなるのかを知りたいと思っています。 O(1) よりも。
助けてくれてありがとう!