コレクション(集合)はその要素の値が一意である含んでいる容器です。
ライブラリを使用します
書式#include < 設定 >
定義
最も簡単:
設定 < 整数 >;
サポートカスタムされているとして、設定およびその他のSTL。
小規模から大規模までのセットが自動的に要素なので、私たちは、プライオリティキューは非常に似ているその比較関数を設定することができます。
カスタム比較関数を使用して方法1:
書式#include <stdio.hに> する#include < 設定 > 書式#include < 文字列 > 使用して 名前空間はstdを、 構造体の人々 { 文字列名。 int型の年齢; }。 構造体CMP { ブール 演算子 ()(人物、人物B) { 場合(a.name == b.name)を返す 偽。 リターン a.age <b.age。 // 按照年龄由小到大进行排序 } }。 セット <ピープル、CMP> S;
方法2演算子のオーバーロード
する#include <stdio.hに> する#include < SET > の#include < ストリング > 使用して 名前空間STD; 構造体人 { 文字列名; int型の年齢、 BOOLの 演算子 <(CONST人物P)CONST // 演算子オーバーロード { IF(名前== P .nameの)復帰 はfalse ; // 名前で再ために 返す年齢<p.age; // 年齢によって昇順ソート } }; SET <ピープル> Sを、
第3幕フレンド関数
#include <ビット/ STDC ++ H.> 使用して名前空間STD; 構造体人 { 文字列名; INT 年齢、 友人BOOLの演算子 <(constの人物A&、CONST 人物&B) { IF(a.name == b.name)リターンfalseに ; // 名前で再へ戻り a.age <b.age; // 年齢別の昇順ソートを } }; SET <ピープル> S;
トラバーサル
また、あなたはイテレータのアクセスを必要とします:
セット <ピープル>は::それをイテレータ。 以下のための(それは)(s.beginを=;それ= s.end();それ++! ) { のprintf(" 姓名:%sの年龄:%dは\ nを"、(*それ).name.c_str()、(* それ).age)。 }
* tのアクセス設定値の方法を採用する必要があります。
その他の用途:
開始();最初の要素のアドレス
をクリア();容器セットクリア
COUNT(x)は、要素のx個
の空の場合、(空の)
最終アドレスの背後に一つの元素; END()
ERASE(x)は、削除元素Xの
検索(X);終わりリターンが存在しない場合、アドレスを返す、要素xを見つける
(x)の挿入;元素Xの添加
サイズ()要素の数