バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWGSortedVector(val)
RWGSortedVector(val) RWGVector(val)
#include <rw/gsortvec.h> declare(RWGSortedVector,val) implement(RWGSortedVector, val) RWGSortedVector(val) v; // vals のソート済みベクトル
クラス val には次のものが必要です。
このクラスを使用するには、クラス自身だけでなくその基底クラスも宣言および実装しなければなりません。倍精度実数の順序付きコレクションを宣言および実装する方法を示します。
declare(RWGVector,double) // 基底クラスの宣言 declare(RWGSortedVector,double) // ソート済みベクトルの宣言 // 1 つの .cpp ファイルだけに、次のように記述しなければなりません。 implement(RWGVector,double) // 基底クラスの実装 implement(RWGSortedVector,double) // ソート済みベクトルの実装
RWGSortedVector のすべての val で、RWGSortedVector とその基底クラス RWGVector 両方について、コードのどこかでマクロ implement に対する呼び出しを 1 回だけ行う必要があります。
2 等分探索を使用して、挿入や取り出しを行います。RWGSortedVector(val) のコンストラクタには、比較関数へのポインタが必要なので注意してください。この関数には、次のプロトタイプが必要です。
int comparisonFunction(const val* a, const val* b);これは、項目 a が項目 b に比べて小さいか、大きいか、等しいかに応じて、それぞれゼロより小さい整数、ゼロより大きい整数、ゼロをそれぞれ返します。コレクション内の項目を a、キーを b とします。
#include <rw/gsortvec.h> #include <rw/rstream.h> declare(RWGVector,int) declare(RWGSortedVector,int) implement(RWGVector,int) implement(RWGSortedVector,int) // 比較関数を宣言および定義する int compFun(const int* a, const int* b) { return *a - *b; } main() { // 比較関数 "compFun" を使用してインスタンスを宣言および定義する RWGSortedVector(int) avec(compFun); // 挿入を行う avec.insert(3); // 3 avec.insert(17); // 3 17 avec.insert(5); // 3 5 17 cout << avec(1); // '5' を出力する cout << avec.index(17); // '2' を出力する } |
RWGSortedVector(val)( int (*f)(const val*, const val*) );
RWGSortedVector(val)(int (*f)(const val*, const val*), size_t N);
val operator()(size_t i) const;
val operator[](size_t i) const;
size_t entries() const;
size_t index(val v) const;
RWBoolean insert(val v);
void removeAt(size_t indx);
void resize(size_t newCapacity);