問題タブ [const-iterator]

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 投票する
1 に答える
75 参照

c++ - const std::map の検索

私は自分のクラスの 1 つに取り組んでいますが、つまずきに出くわしました。ソースのサンプルを示しますが、クラス、メソッド、および変数名の名前だけが異なりますが、実装は同じです。適切な関数へのコード ブロック内に、私の問題、質問、懸念事項が表示されます。

MyClass.h

MyClass.cpp

私のソースでは、最初の関数よりも重要なのはこの 2 番目の関数です! ヘルプや提案は大歓迎です。

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

c++ - 単純な反復子の違いに関する "No match for operator-" エラー

これが私のコードです:

私は得てerror: no match for 'operator-' in 'st.std::set<_Key, _Compare, _Alloc>::find [with _Key = int, _Compare = std::less<int>, _Alloc = std::allocator<int>](((const int&)((const int*)(&1)))) - st.std::set<_Key, _Compare, _Alloc>::begin [with _Key = int, _Compare = std::less<int>, _Alloc = std::allocator<int>]()'います。

イテレータの違いが突然機能しなくなった理由がわかりません! ここで何か不足していますか?

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

c++ - オブジェクトをベクターの const_iterator にキャストします

こんにちはstd::vector<T>::const_iterator、パラメーターとして受け取る関数があります。

質問は:

タイプ T のスタンドアロン オブジェクトをイテレータにキャストして、それを引数として使用するにはどうすればよいですか?

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

c++ - 自作イテレータの const-correctness

一般的な目標

オブジェクトのコレクションを管理します(簡単CollectionReal例として)。次に、コレクションに反復子を定義しました。つまりiterator、 、const_iteratorreverse_iteratorおよびconst_reverse_iterator. iteratorこの例では、とだけに注目しconst_iteratorます。他の 2 つは非常によく似ています。

その後、特定の条件に関して要素を保持するかどうかを指定するコレクションのフィルターを定義したいと思います。Real例として、正の値を持つインスタンスのみを保持します。また、保持された要素のみでコレクションを反復処理したいと思います。

コレクションの実装方法

この例では、コレクション内の私のオブジェクトは非常に単純です。目標は、ネイティブ型の代わりにオブジェクトを持つことです:

次に、内部の実際のコンテナーを知らなくても、コレクションを定義します。

これは、次の単純な例で非常にうまく機能しています。

そして、このプログラムは期待される出力を書き込みます:

フィルターの実装方法

ここで、コレクションへの参照またはポインターを持ち、反復子を持ち、フィルターを介して値を受け入れる抽象関数を持つ抽象フィルターを作成したいと考えています。この最初のステップでは、イテレータを使用せずにクラスのみを作成しました。

次に、特定の条件を実装する新しいフィルターを作成するのは非常に簡単です。

フィルターに反復子を実装する前に、いくつかのコメント/質問があります。

  1. このフィルターは非 constCollection&で機能しますが、begin() constandend() const関数は本当に必要ですか? はいの場合、なぜですか?
  2. にフィルターを適用することはできませんが、const Collection&私の目標には明らかに必要です。それを行う良い方法は何ですか?CollectionFilterクラスCollectionFilterConstを非常によく似たコードを持つクラスに複製する必要がありますか? さらに、このソリューションは、2 つの類似したクラスから継承する必要があるユーザーにとって非常に混乱します。

それでは、イテレータの実装に行きましょう。この例では、 のみを記述し、 は記述しiteratorませんでしたconst_iterator。これをクラスに追加します:

これは、この単純な例でもうまく機能しています

期待される出力を与える:

繰り返しますが、いくつかの質問:

  1. 私はこのアプローチで完全に間違っていますか?
  2. わずかな変更だけでCollectionFilter::iterator実装するには、 のコードを複製する必要があると思います。CollectionFilter::const_iteratorこのコードの重複を避ける方法はありますか (重複したクラスCollectionFilterConstと逆の反復子を数えると、8 回書かれています)。
  3. コードの const の正確さに満足できません。いくつか問題がありますか?

前もって感謝します !

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

c++ - 範囲のC ++ソートビュー - const_iteratorの作成方法は?

基になる要素のシーケンスでソートされたビューとして機能するクラスを作成しようとしています。constこれまでのところ、非バージョンを思いつきました。現在、機能を提供するように適応させるのに問題がありconst_iteratorます。

これまでのコードは次のようになります。

対応するイテレータは次のようになります。

使用例は次のようになります。

出力:

ケースにイテレータを適応させるにはどうすればよいconstですか? 代わりに、基になる型 (intたとえば) でイテレータをテンプレート化すると、より簡単になりますInputIt。このクラスを定義するより良い方法はありますか?

たとえば、range-v3ライブラリを使用してこれを解決できると思いますが、これ以上依存関係を追加せず、C++11/14 関数に依存しようとしています。

0 投票する
4 に答える
482 参照

c++ - const_iterator が reverse_iterator のようなベースを提供しないのはなぜですか?

対応する非 constのような関数をconst_iterator提供しないのはなぜですか?const_iterator::base()iteratorreverse_iterator

次の擬似コードを検討してください(たとえば、幾何学的アルゴリズム):

universeすべての入力ポイントはどこにありますか。のメンバーのサブセットに含む反復子をsieve()-ing した後。以下は、 のメンバーへの参照 (反復子) で構成される から生成される を構築します。interesting_subsetuniversealgorithm()structureinteresting_subsetuniverse

最後に、point結果に含まれる sを変更しstructureます (たとえば、シフトします)。しかし、同様に、アクション中の modyfining からそれらを保護したいので、 /の反対として/algorithmを使用しました。最後に、 source への参照しかありません。std::cbeginstd::cendstd::beginstd::endconst_iteratorpoint

これは、iterator std::container< T >::const_iterator::base() constSTL コンテナーに含めたいメンバー関数の使用例です。

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

c++ - C++、const_iterator を使用して operator= を作成する際に問題がある

次のように書くとコンパイルエラーが発生します。

const_iteratorのための私自身のクラスですconst iterator
cpクラスのオブジェクトですConjuntoPreguntas(以下を参照)。
エラーは次のとおりです。

コード:

誰かが私を助けることができれば、私はとても感謝しています.

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

c++ - 独自のリストとイテレータ STL C++ の実装

皆さんこんにちは、

大学のプロジェクトで、イテレータを使用して独自のリストを実装する際に問題が発生しています。ループを正しく反復するにはどうすればよいですか? 誰か助けてくれませんか?私の英語が間違っている場合は申し訳ありません。

最初のループや 2 番目のループのように、リストを繰り返し処理したいと思います。