問題タブ [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++ - ブースト反復子を使用して、マップの各キーに対して値コンテナーのすべての要素に反復子を実装します
boost::iterator_adaptor を使用して map/unordered_map の値だけのイテレータを実装する方法は? 次のコードを試しましたが、コメント行のために機能しません。 問題を回避する解決策はありますか?
ここでの質問は、boost コードに示されている map_values アダプターの例とは少し異なります。ここでは、マップの値フィールドはリストやベクターなどの別のコンテナーであり、ここでの要件は、マップのすべてのキーに対してこれらのリストのすべての要素を反復処理することです。イテレータの deref は、それらのリスト/ベクトルの value_type の型です。イテレータの最後は、最後のキーのリストの最後です
c++ - 正規表現とブースト変換イテレータを使用して c-string をトークン化して変換する方法は?
セミコロンで区切られた数字で c-string をトークン化し、それらをベクトルに格納しようとしています。これは私の単純化されたアプローチです
エラーメッセージが表示されます:
わかりません。
c++ - ポインター値型の unordered_map の反復子を、const 参照値型の同じマップの反復子に変換します
私は次のクラスを持っています:
ご覧のとおり、このクラスのユーザーが要素_children
を変更せずに繰り返し処理できる方法が必要です。pair<char, const Node&>
の代わりに型の要素を指すイテレータを作成したいのはそのためですpair<char, ptr_type>
。
基本イテレータ クラスの作成は、目の前のタスクには少し複雑すぎるようです。transform_iterator
私はブーストイテレータを見てきましたが、それが進むべき道かもしれないと思いますが、それを機能させる方法をまだ見つけていません。
で定義されているイテレータのさまざまな例の例をどこで見つけることができるか知っている人はいますboost-iterators
か? ドキュメントには各タイプの例が 1 つしかなく、常に私のニーズに合うとは限りません (私はこのライブラリを初めて使用するため、明らかな何かを見落としている可能性があります)。
更新:これが私の使用の試みですboost::transform_iterator
残念ながらコンパイルされず、次のエラーが発生します。
c++ - カスタムコンテナタイプを BOOST_FOREACH に適合させる方法は?
BOOST_FOREACH
変更できないコード ベースのレガシー コンテナ タイプの 1 つを使用したいと考えています。
そのタイプで次のメソッドが定義されています。
.length()
コンテナ内の現在の要素数を返す.operator[](unsigned i)
インデックスの下の要素への参照を返すi
ブーストのドキュメントが示唆するように、コンテナ タイプをシングル パス レンジ コンセプトを満たすようにする必要があることはわかっていますが、タイプを変更できないため、どうにか迷っています。
ヒント/解決策は役に立ちます。
編集
私は提案に行こうとしましたが、このコード
次のコンパイラエラーが表示されます:
c++ - Windows レジストリ列挙のフォワード トラバーサル イテレータを実装する方法
Boost Iterator Facadeを使用してカスタム シングル パス イテレータを構築し、C API をラップして、Windows レジストリ キーに含まれる値を (C++ の方法で) 反復処理することができましたRegEnumValue
。
例えば:
基本的に、反復子のincrement
メソッドはパラメーターをRegEnumValue
増やして呼び出しdwIndex
ます (最初は反復子クラス コンストラクターで 0 に設定されます)。が返されると、それが「終了」反復子ERROR_NO_MORE_ITEMS
にマップされます。
私は使用しましたboost::single_pass_traversal_tag
:
API を Windows 実装にdirectory_iterator
ラップするFindNextFile
Boost.Filesystemも、シングルパスイテレータとして実装されています。同様に、std::experimental::filesystem::directory_iterator
は入力反復子でもあります (前方反復子ではありません)。
では、レジストリの列挙で iterator カテゴリをForward Traversal Iteratorにアップグレードすることは可能でしょうか? その目標を達成するには、どのような手順に従う必要がありますか?
つまり、次のような Windows レジストリ API を使用して、Forward Traversal Iterator に必要なマルチパストラバーサルを実装することは可能でしょうRegEnumValue
か? もしそうなら、どのように?
PSレジストリ値の列挙/反復について説明しましたが、 APIを使用してレジストリキーを列挙/反復する場合も非常に似ています。RegEnumKeyEx
c++ - openMP v. 2.0 を使用してフィルター反復子を並列化する
私は大きなベクトルを持っています。並行して正のメンバーのみをインクリメントしたいと思います。
結果はダメ!
しかし、私が解決しようとしている実際の問題は、これよりも複雑です。より理解しやすいように、質問を単純化しようとしました。また、openMP v.2.0 の使用に制限されていることにも言及する必要があります。そのため、ベクターを分割し、ベクターの各部分を特定のスレッド専用にしようとしました。
任意のアイデアをいただければ幸いです。
c++ - boost::iterator_adapter を使用してカスタム Iterator を実装する場合、mutable と const の Iterator に同じクラスを使用できますか?
を所有し、、、、およびメソッドを提供する必要があるクラスがありstd::vector
ます。実装の詳細を公開したくない、つまり を使用したくないので、独自の Iterator が必要です。私が理解したように、これが目的です: iterator を取り、それを新しい Iterator タイプ内にラップします -> myは thenになります。begin()
end()
cbegin()
cend()
std::vector
boost::iterator_adapter
std::vector<T>::iterator
MyClass::iterator
まず、boost::iterator_adapter についての私の理解は正しいusing const_iterator = const iterator
ですか?
これはコンパイルできない可能性があります。