問題タブ [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.

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

scala - トレイト Iterator を拡張するクラスでメソッド map と flatMap をオーバーライドする

IteratorScalaの初心者として、式で取得および処理されるすべてのアイテムのカウンターと、for式の「ループ」の1つ(外側のループとネストされたループ)の新しい反復ごとにインクリメントされるカウンターを実装しようとしていますループ) が開始されます。counter = counter + 1要件は、式の多数の場所にステートメント like を配置するだけでなく、これを達成することですfor。次のリストは、この問題に対する私の提案された解決策を示しています。私は知りたいのですが、の抽象メンバーをnext実装するメソッドIteratorが呼び出される (および対応するカウンターがインクリメントされる) のに対し、 trait で定義されたペンダントflatMapをオーバーライドする(およびそれらを経由して呼び出す) ことはありません。全然呼んだ。mapIteratorsuper

対応するfor式は次のようになります。

誰かが与えられた問題をより良い方法で解決する方法のヒントを教えてくれたら幸いです. しかし、何よりも、私のソリューションが と をオーバーライドする理由を知りたいと思ってIteratormapますflatMap;-)

よろしく

マーティン

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

c++ - イテレータの検証

私は C++03 プロジェクトで作業しています。そして、イテレータをテンプレートに取り込んでいます。この反復子が特定の型を参照していると断言する必要があります。C++ は、検証のために独自の構造体を作成する以外に、これを行う方法を提供してくれますか?

私が欲しいのは、この C++14 機能と同等のものです。

これは C++03 であるため、使用する必要があると思います。assert実行時のみのデバッグ チェックであれば問題ありません。チェックが必要なだけです。

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

c++ - istream_iterator から move_iterator を作成できますか?

次のコードを検討してください。

上記のコードは、次の行のためにコンパイルされません (!!!):

しかし、 andをそれぞれ (通常の反復子) および に置き換えるmstartと、コードはコンパイルされます。なぜ私は作ることができないのですか?meosstarteosmove_iterators

編集: なぜストリーム/文字列から文字を移動したいのか疑問に思っている人のために。char実際の問題には、文字列からのコピーを避けるべきよりも複雑なデータ型が含まれます。char簡単にするために、エラーの原因となるメカニズムを提示するために使用されました。

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

c++11 - iterator_traits を使用してイテレータのペアから値の型を推測する

私はタイプを持っています

ここで、std::iterator_traits を使用して、Range の反復子が指している型を推測したいと思います。

範囲型のオブジェクトから、これを達成する方法を教えてください。

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

c++ - コンパイル エラーにつながる予期しないテンプレートのインスタンス化

なぜ自分のコードをコンパイルできないのか不思議です。下は大丈夫ですか?Category1 と Category2 の typedef-s を使用して単純なクラスを宣言しようとしています。

カテゴリ 1 の typedef は正常にコンパイルされますが、カテゴリ 2 のタイプ定義はコンパイルされません。

周囲のクラス X がインスタンス化されていないにもかかわらず、クラス iterator_traits<> がインスタンス化されているため、Category2 typedef をコンパイルできないようです...私にとって非常に混乱しているようです。

次のエラーを取得するためにクラス X をインスタンス化する必要がないことに注意してください (上記は完全なコンパイル ユニットです)。

Visual Studio 2012 では、次のようになります。

xutility(364) には次のものがあります。

私の場合は、コンストラクターでラムダを取得するクラスを宣言したいということです。ラムダはコンテナへの参照を返すことが期待されています。そして、返されたコンテナーにランダム アクセス イテレーターがあるかどうかを判断する必要があります。しかし、私はこのコンパイルエラーに行き詰まりました。説明ありがとう!

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

c++ - 2 つのイテレータ間の要素の総数を取得するにはどうすればよいですか?

コンテナー内のすべての要素が一意であることをテストする関数を作成しました。

できます。ただし、size_t返された fromsize()difference_type返された fromdistance()は同じ符号ではありません。

std::distanceは、反復子の方向に基づいて負の数を返す場合があります。

その場合、要素の量が符号付き最大値を超えたときに、2 つのイテレータ間の要素の総数を確実に取得するにはどうすればよいでしょうか? std::sizeのようなものを探していましたが、コンテナ全体が必要です。

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

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

  1. 特に、次の場合の効果は定義されていません:...
    1. そのコンポーネントで特に許可されていない限り、テンプレート コンポーネントをインスタンス化するときに、不完全な型 ([basic.types]) がテンプレート引数として使用された場合。

そしてそれに関する歴史的議論

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

c++ - 別のテンプレート型引数を使用する代わりに、テンプレート関数で iterator_traits を使用するのはなぜですか?

たとえば、cplusplus.comのこのスニペットを参照すると、次のようになります。

iterator_traits問題は、次に示すように、別のテンプレート引数を使用するのではなく、このコンテキストで使用する理由です。