問題タブ [iterator-traits]
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.
scala - トレイト Iterator を拡張するクラスでメソッド map と flatMap をオーバーライドする
Iterator
Scalaの初心者として、式で取得および処理されるすべてのアイテムのカウンターと、for
式の「ループ」の1つ(外側のループとネストされたループ)の新しい反復ごとにインクリメントされるカウンターを実装しようとしていますループ) が開始されます。counter = counter + 1
要件は、式の多数の場所にステートメント like を配置するだけでなく、これを達成することですfor
。次のリストは、この問題に対する私の提案された解決策を示しています。私は知りたいのですが、の抽象メンバーをnext
実装するメソッドIterator
が呼び出される (および対応するカウンターがインクリメントされる) のに対し、 trait で定義されたペンダントflatMap
をオーバーライドする(およびそれらを経由して呼び出す) ことはありません。全然呼んだ。map
Iterator
super
対応するfor
式は次のようになります。
誰かが与えられた問題をより良い方法で解決する方法のヒントを教えてくれたら幸いです. しかし、何よりも、私のソリューションが と をオーバーライドする理由を知りたいと思ってIterator
いmap
ますflatMap
;-)
よろしく
マーティン
c++ - イテレータの検証
私は C++03 プロジェクトで作業しています。そして、イテレータをテンプレートに取り込んでいます。この反復子が特定の型を参照していると断言する必要があります。C++ は、検証のために独自の構造体を作成する以外に、これを行う方法を提供してくれますか?
私が欲しいのは、この C++14 機能と同等のものです。
これは C++03 であるため、使用する必要があると思います。assert
実行時のみのデバッグ チェックであれば問題ありません。チェックが必要なだけです。
c++ - istream_iterator から move_iterator を作成できますか?
次のコードを検討してください。
上記のコードは、次の行のためにコンパイルされません (!!!):
しかし、 andをそれぞれ (通常の反復子) および に置き換えるmstart
と、コードはコンパイルされます。なぜ私は作ることができないのですか?meos
start
eos
move_iterators
編集:
なぜストリーム/文字列から文字を移動したいのか疑問に思っている人のために。char
実際の問題には、文字列からのコピーを避けるべきよりも複雑なデータ型が含まれます。char
簡単にするために、エラーの原因となるメカニズムを提示するために使用されました。
c++11 - iterator_traits を使用してイテレータのペアから値の型を推測する
私はタイプを持っています
と
ここで、std::iterator_traits を使用して、Range の反復子が指している型を推測したいと思います。
範囲型のオブジェクトから、これを達成する方法を教えてください。
c++ - コンパイル エラーにつながる予期しないテンプレートのインスタンス化
なぜ自分のコードをコンパイルできないのか不思議です。下は大丈夫ですか?Category1 と Category2 の typedef-s を使用して単純なクラスを宣言しようとしています。
カテゴリ 1 の typedef は正常にコンパイルされますが、カテゴリ 2 のタイプ定義はコンパイルされません。
周囲のクラス X がインスタンス化されていないにもかかわらず、クラス iterator_traits<> がインスタンス化されているため、Category2 typedef をコンパイルできないようです...私にとって非常に混乱しているようです。
次のエラーを取得するためにクラス X をインスタンス化する必要がないことに注意してください (上記は完全なコンパイル ユニットです)。
Visual Studio 2012 では、次のようになります。
xutility(364) には次のものがあります。
私の場合は、コンストラクターでラムダを取得するクラスを宣言したいということです。ラムダはコンテナへの参照を返すことが期待されています。そして、返されたコンテナーにランダム アクセス イテレーターがあるかどうかを判断する必要があります。しかし、私はこのコンパイルエラーに行き詰まりました。説明ありがとう!
c++ - 2 つのイテレータ間の要素の総数を取得するにはどうすればよいですか?
コンテナー内のすべての要素が一意であることをテストする関数を作成しました。
できます。ただし、size_t
返された fromsize()
とdifference_type
返された fromdistance()
は同じ符号ではありません。
std::distanceは、反復子の方向に基づいて負の数を返す場合があります。
その場合、要素の量が符号付き最大値を超えたときに、2 つのイテレータ間の要素の総数を確実に取得するにはどうすればよいでしょうか? std::sizeのようなものを探していましたが、コンテナ全体が必要です。
c++ - 構造体 std::iterator_traits に 'pointer' という名前の型がありません<...>
これが私のlinked_listテンプレートの断片です:
行をコメント解除したままusing...
にすると、コードがコンパイルされません。
g++5.4 :
icpc :
その行がなければ、すべて正常にコンパイルされます。
質問は次のとおりです。上記のコードでコメントusing difference_type = typename std::iterator_traits< iterator >::difference_type;
するとどうなりますか(そのような変更コードがコンパイルされた場合のみ)。
================================================== ======================== res.on.functions/2.5
- 特に、次の場合の効果は定義されていません:...
- そのコンポーネントで特に許可されていない限り、テンプレート コンポーネントをインスタンス化するときに、不完全な型 ([basic.types]) がテンプレート引数として使用された場合。
そしてそれに関する歴史的議論。
c++ - 別のテンプレート型引数を使用する代わりに、テンプレート関数で iterator_traits を使用するのはなぜですか?
たとえば、cplusplus.comのこのスニペットを参照すると、次のようになります。
iterator_traits
問題は、次に示すように、別のテンプレート引数を使用するのではなく、このコンテキストで使用する理由です。