/* ( n2.C ) NIHクラス・ライブラリ [ Set ] 機能:集合(重複要素は許さない) Set s(16) Set クラスを定義する(集合 s を大きさ 16 で定義する)。 s.reSize(30) 集合のサイズを変更する。 s.add(A) 要素(クラス)を追加する。 s.remove(C) 集合の中から要素 C を取り除く。 s.removeAll() 集合の要素を全てクリアする s.includes(C) 集合の中に要素 C があるか調べる。あれば1、なければ0を返す。 (s&t) 集合 s,t の AND をとる。 (s|t) 集合 s,t の OR をとる。 (s-t) 集合 t に含まれない s の要素をとる。 s.asArrayOb(), s.dumpOn(cout) もそのまま使える。 */ #include "Set.h" #include "Point.h" #include "OrderedCltn.h" // .asOrderedCltn にのみ必要 main() { // 例として Point クラスにする Point A(1,1); Point B(1,2); Point C(1,3); Point D(1,3); Set s(16); // Set クラスを定義する s.add(A); // 要素(クラス)を追加する。 s.add(B); s.add(C); s.add(D); cout << "s = " << s << endl; // 入っている要素を全て表示する Set t = s; // t.removeAll(); 全てクリアする s.reSize(30); // 定義した Set クラスのサイズを変更する cout << s.includes(C) << endl; // 1 : Set s の中に要素 C があるか調べる cout << (t==s) << endl; // 1 : Set t と s が同じ内容か調べる s.remove(C); // Set s の中から要素 C を取り除く cout << (t==s) << endl; // 0 : Set t と s が同じ内容か調べる Point E(1,4); s.add(E); cout << "s = " << s << endl; cout << "t = " << t << endl; cout << "(s&t) = " << (s&t) << endl; // 集合 s,t の AND をとる cout << "(s|t) = " << (s|t) << endl; // 集合 s,t の OR をとる cout << "(s-t) = " << (s-t) << endl; // t に含まれない s の要素をとる cout << "s.as..= " << s.asOrderedCltn() << endl; } // これは今のところ意味不明 /* [結果] s = (1,1) (1,3) (1,2) 便宜的に並べて書いた 1 1 0 s = (1,1) (1,4) (1,2) t = (1,1) (1,3) (1,2) (s&t) = (1,1) (1,2) (s|t) = (1,1) (1,4) (1,3) (1,2) (s-t) = (1,4) s.as..= (1,1) (1,4) (1,2) */