/* ( n4.C ) NIHクラス・ライブラリ [ LinkedList ] 続き 機能:線形リスト(重複要素を許す) b.addAll(c) 今のリスト b に c を追加する。 b.asSet() 重複せずに要素を取り出す b.indexOf(D) 要素が何番目にあるか取り出す。0から始まる。 b.reSize(30) リストの大きさを変更する。 LinkOb::castdown(c[1])->value(A) c[1] の要素を A 要素に変更する DO(c,Object,ob) cout << *ob;OD リスト c の要素を1個ずつ取り出す LinkedList& c = *LinkedList::castdown(b.deepCopy()) リスト b を c にコピ−する */ #include "Point.h" #include "LinkedList.h" #include "LinkOb.h" #include "Set.h" // .asSet() のみ関係する main() { Point A(1,1); Point B(1,2); Point C(1,3); LinkOb bA(A); LinkOb bB(B); LinkOb bC(C); LinkedList b; // リストを定義して要素を入れる b.add(bA); b.add(bB); b.add(bC); // リスト b を c にコピ−する LinkedList& c = *LinkedList::castdown(b.deepCopy()); b.reSize(30); Point D(1,0); LinkOb bD(D); b.add(bD); cout << "b = " << b << endl; // b = (1,1)(1,2)(1,3)(1,0) b.addAll(c); // 今のリスト b に c を追加する cout << "b = " << b << endl; // b = (1,1)(1,2)(1,3)(1,0) (1,1)(1,2)(1,3) cout << "b.asSet(): " << b.asSet() << endl; // (1,1)(1,3)(1,0)(1,2) b.remove(bB); // bB 要素を除去する cout << "b = " << b << endl; // b = (1,1)(1,3)(1,0) (1,1)(1,2)(1,3) // cout << b.indexOf(A) << b.indexOf(D) << b.indexOf(B) << endl; 0 2 4 と出る DO( c,Object,ob ) // { } はいらない。do-while 文みたいなもの cout << *ob; // (1,1)(1,2)(1,3) OD cout << endl; cout << "c = " << c << endl; // c = (1,1)(1,2)(1,3) LinkOb::castdown(c[1])->value(A); // c[1] の要素を A 要素に変更する cout << "c = " << c << endl; // c = (1,1)(1,1)(1,3) while (c.size() != 0) c.remove(*c.first()); b.removeAll(); } /* [結果] b = (1,1)(1,2)(1,3)(1,0) b = (1,1)(1,2)(1,3)(1,0)(1,1)(1,2)(1,3) b.asSet(): (1,1)(1,3)(1,0)(1,2) b = (1,1)(1,3)(1,0)(1,1)(1,2)(1,3) (1,1)(1,2)(1,3) c = (1,1)(1,2)(1,3) c = (1,1)(1,1)(1,3) */