`stl`アルゴリズム互換のコンテナになるには何が必要ですか?

マイケル

1)特定のstlアルゴリズムについて、そのコンテナを使用するために実装する必要のあるカスタムコンテナ/イテレータ機能をどのように見つけるのですか?

2)コンテナをすべてのstlアルゴリズムと完全に互換性のあるものにするために何を実装する必要がありますか?

ジャック

C ++ 11標準では、脚注の§25.1に記載されています。

3すべてのアルゴリズムは、データ構造の特定の実装から分離されており、イテレータータイプによってパラメーター化されます。このため、これらのデータ構造がアルゴリズムの前提を満たすイテレータタイプを持っている限り、プログラム定義のデータ構造を処理できます。

その後:

5この節全体を通して、テンプレートパラメータの名前はタイプ要件を表すために使用されます。アルゴリズムのテンプレートパラメータがInputIterator、InputIterator1、またはInputIterator2の場合、実際のテンプレート引数は入力イテレータ(24.2.3)の要件を満たす必要がありますアルゴリズムのテンプレートパラメータがOutputIterator、OutputIterator1、またはOutputIterator2の場合、実際のテンプレート引数は出力イテレータの要件を満たす必要があります(§24.2.4)。アルゴリズムのテンプレートパラメータがForwardIterator、ForwardIterator1、またはForwardIterator2の場合、実際のテンプレート引数はフォワードイテレータの要件を満たしている必要があります(§24.2.5)。アルゴリズムのテンプレートパラメータがBidirectionIterator、Bidirection-Iterator1、またはBidirectionIterator2の場合、実際のテンプレート引数は、双方向イテレータ(§24.2.6)の要件を満たす必要がありますアルゴリズムのテンプレートパラメータがRandomAccessIterator、Random-AccessIterator1、またはRandomAccessIterator2の場合、実際のテンプレート引数はランダムアクセスイテレータの要件を満たしている必要があります(§24.2.7)。

したがって、基本的には、カスタムクラスに通常のイテレータを取得する方法を提供する必要があり、これらのオブジェクトは、サポートするアルゴリズムに応じて要件を満たす必要があります。

たとえばstd::any_of、次のように宣言されていることがわかります。

template <class InputIterator, class Predicate> 
bool any_of(InputIterator first, InputIterator last, Predicate pred);

したがって、入力イテレータを提供する必要があります。そうすると、§24.2.3でその要件を確認し、それらを実装できます。

  • コンテキスト的にboolに変換可能(a != b
  • Tに変換可能(*a
  • 参照解除可能(a->m
  • 増分

イテレータの種類ごとに同じ話。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

コンテナ全体で作業したい場合でも、STLのアルゴリズム関数で常に範囲を明示的に指定する必要があるのはなぜですか?

分類Dev

コンテナをできるだけいっぱいにするアイテムを選択したい場合、それは何と呼ばれますか?また、どのアルゴリズムを使用する必要がありますか?

分類Dev

STLアルゴリズムはどのようにコンテナを識別しますか?

分類Dev

C ++ / STLコンテナに重複があるかどうかを確認するには、どのアルゴリズムを使用する必要がありますか?

分類Dev

カスタムコンテナで遠隔アルゴリズムを使用するために必要な要件

分類Dev

これを解決するためにどのSTLコンテナ/アルゴリズムを使用できますか?

分類Dev

QtコンテナでのSTLアルゴリズムの使用

分類Dev

stlコンテナとアルゴリズムライブラリによって2つのベクトルの内積を計算する方法は?

分類Dev

eコマースレコメンデーションシステムのknnアルゴリズムに最適なkは何ですか

分類Dev

Linuxのfactorコマンドの背後にあるアルゴリズムは何ですか?

分類Dev

Cコンパイラでアルゴリズムを別のアルゴリズムに置き換えることはできますか?

分類Dev

アルゴリズムの複雑さがO(log log n)になる原因は何ですか?

分類Dev

コンテナ内の1つのアイテムが述語を満たすかどうかを判断できるSTLアルゴリズムはどれですか。

分類Dev

STL数値アルゴリズムが「op =」ではなく「op」を使用するのはなぜですか?

分類Dev

JavaScript-このコイン変更アルゴリズムの何が問題になっていますか

分類Dev

一部のSTLアルゴリズムがオーバーロードの代わりに追加の「_if」関数を提供するのはなぜですか?

分類Dev

Ubuntuでアルゴリズムを描画するのに最適なソフトウェアは何ですか

分類Dev

Rコアの `split`関数の背後にあるアルゴリズムは何ですか?

分類Dev

同時 GC トレースに SATB アルゴリズムが必要なのはなぜですか?

分類Dev

手帳のレンダリングに関するアルゴリズムの名前は何ですか?

分類Dev

小さなポーリングメカニズムに最適なアルゴリズムは何ですか?

分類Dev

このスケジューリングアルゴリズムのシナリオに答える最良の方法は何ですか?

分類Dev

Rasa NLUの背後にあるアルゴリズムは何ですか?

分類Dev

Random.next()の背後にあるアルゴリズムは何ですか?

分類Dev

Random.next()の背後にあるアルゴリズムは何ですか?

分類Dev

ある文字列が別の文字列のアナグラムである必要がある文字置換の数を決定するためのアルゴリズムの欠陥は何ですか?

分類Dev

既存のデータ構造(vector <Object *>としてのエッジと頂点)でBGLアルゴリズムを使用するには何が必要ですか?

分類Dev

Javaで文字列を逆にするための最も効率的なアルゴリズムは何ですか?

分類Dev

いじめアルゴリズムに対する高度なマスター選挙アルゴリズムの利点は何ですか?

Related 関連記事

  1. 1

    コンテナ全体で作業したい場合でも、STLのアルゴリズム関数で常に範囲を明示的に指定する必要があるのはなぜですか?

  2. 2

    コンテナをできるだけいっぱいにするアイテムを選択したい場合、それは何と呼ばれますか?また、どのアルゴリズムを使用する必要がありますか?

  3. 3

    STLアルゴリズムはどのようにコンテナを識別しますか?

  4. 4

    C ++ / STLコンテナに重複があるかどうかを確認するには、どのアルゴリズムを使用する必要がありますか?

  5. 5

    カスタムコンテナで遠隔アルゴリズムを使用するために必要な要件

  6. 6

    これを解決するためにどのSTLコンテナ/アルゴリズムを使用できますか?

  7. 7

    QtコンテナでのSTLアルゴリズムの使用

  8. 8

    stlコンテナとアルゴリズムライブラリによって2つのベクトルの内積を計算する方法は?

  9. 9

    eコマースレコメンデーションシステムのknnアルゴリズムに最適なkは何ですか

  10. 10

    Linuxのfactorコマンドの背後にあるアルゴリズムは何ですか?

  11. 11

    Cコンパイラでアルゴリズムを別のアルゴリズムに置き換えることはできますか?

  12. 12

    アルゴリズムの複雑さがO(log log n)になる原因は何ですか?

  13. 13

    コンテナ内の1つのアイテムが述語を満たすかどうかを判断できるSTLアルゴリズムはどれですか。

  14. 14

    STL数値アルゴリズムが「op =」ではなく「op」を使用するのはなぜですか?

  15. 15

    JavaScript-このコイン変更アルゴリズムの何が問題になっていますか

  16. 16

    一部のSTLアルゴリズムがオーバーロードの代わりに追加の「_if」関数を提供するのはなぜですか?

  17. 17

    Ubuntuでアルゴリズムを描画するのに最適なソフトウェアは何ですか

  18. 18

    Rコアの `split`関数の背後にあるアルゴリズムは何ですか?

  19. 19

    同時 GC トレースに SATB アルゴリズムが必要なのはなぜですか?

  20. 20

    手帳のレンダリングに関するアルゴリズムの名前は何ですか?

  21. 21

    小さなポーリングメカニズムに最適なアルゴリズムは何ですか?

  22. 22

    このスケジューリングアルゴリズムのシナリオに答える最良の方法は何ですか?

  23. 23

    Rasa NLUの背後にあるアルゴリズムは何ですか?

  24. 24

    Random.next()の背後にあるアルゴリズムは何ですか?

  25. 25

    Random.next()の背後にあるアルゴリズムは何ですか?

  26. 26

    ある文字列が別の文字列のアナグラムである必要がある文字置換の数を決定するためのアルゴリズムの欠陥は何ですか?

  27. 27

    既存のデータ構造(vector <Object *>としてのエッジと頂点)でBGLアルゴリズムを使用するには何が必要ですか?

  28. 28

    Javaで文字列を逆にするための最も効率的なアルゴリズムは何ですか?

  29. 29

    いじめアルゴリズムに対する高度なマスター選挙アルゴリズムの利点は何ですか?

ホットタグ

アーカイブ