セット、多重集合、反復子(イテレータ)コメント

セット、多重集合、反復子(イテレータ)


イテレータ:イテレータ

私たちは、このような配列やリンクリストなど、いわゆるデータ構造のいくつかを見つけることができ、彼らはいくつかの類似した性質を持っています。私たちは、次の2つの例を見て:

  1. アレイ:定義アレイ\(INT〜A [10] \) 最初の要素へのポインタである(A \)\、第二要素がポインタである(A + 1 \)\、第3の要素はポインタであります\(A + 2 \)など、
  2. チェーン:リストについて\(リスト\テキスト{<} intは\ {テキスト>マイリスト}〜; \) 記憶方法のチェーンが格納され、メモリアドレスは連続していないが、分散し、それが唯一の缶\(次\)または\(最後の\)の要素にアクセスします。

2つのポインタ記憶方法を統一するために、我々はと呼ばれるより高度なポインタ、導入\(イテレータを\)今定義\(イテレータを\):\ (STDの\テキスト{::} SETの\テキスト{< INT} \ {テキスト> ::〜}イテレータITER \) このポインタは、以下の操作をサポートすることがあります。

  1. \(ITER \ {テキスト} ++ \) \(ITER \)要素に次のアドレス・ポイント
  2. \(iter- \ HSPACE {0.2pt} - \) \(ITER \)エレメント・アドレス上の点
  3. \(ITER * \) 取得する\(ITER \)格納されたアドレス値にポインタポイント

セット/マルチセット

\(セット\)要素の一意性:が所有するコレクションの性質を持っているコレクションです。そして\(多重集合\)ない上記性質は、形式が存在するであろう:(\ \ {0,0,1,1,2 \} \)ようなセット。

両方のデフォルトのデータ構造は、実行される昇順に平衡二分探索木を使用するのと同様、。

以下は、使用である\(イテレータ\)例:

#include <iostream>
#include <set>
#include <algorithm>

int main() {
    std::set<int> s;
    s.insert(2); s.insert(1); s.insert(10);
    std::set<int>::iterator iter = s.end();
    iter --;
    std::cout << *iter << std::endl; // 10
    iter --;
    std::cout << *iter << std::endl; // 2
    iter --;
    std::cout << *iter << std::endl; // 1
}

上記の例を挙げれば、難しいことではない、見つけること\(()\エンド)の点があるに存在しない\(SETの\)アドレスのを、アドレスが最後の要素です。

注意:

ほとんどすべての\(セット\)機能と返された値がされる(イテレータ\)\

すべての\(下の\ _bound()\ ) と\(上の\ _boundは()\ ) 従うことで、左及び開閉する権利を、すなわち、\([B)\ ) の形で

例えば:

  1. 以下のためのコレクション(\ \ {1,2,3,4,5,6,8,9 \} \)

    \(*下の\ _bound(7)= *上部の\ _bound(7)= 8 \)

  2. 以下のためのアレイ(\ \ {1,2,3,3,3,3,3,4 \} \)

    \(*上部の\ _bound(3) - *下部の\ _bound(3)=カウント(3)= 5 \)

  3. 収集のための\(\ {1,2,3,4,5,6,7,8,9 \} \)

    \(下の\ _bound(10)上部の\ _bound(10)= set.endを()\ =)

おすすめ

転載: www.cnblogs.com/jeffersonqin/p/11210915.html
おすすめ