Tools.h++ 7.0 クラスライブラリ・リファレンスマニュアル: RWSortedVector

バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.

## RWSortedVector

RWSortedVector RWOrdered RWSequenceable ...
... RWCollection RWCollectable

### 形式

      #include <rw/sortvec.h>
      RWSortedVector a;

### 説明

  このクラスは、内部的に `compareTo()` 関数でソートされインデックス番号でアクセスできる、順序付き項目の集まりを表します。項目の重複は許可されています。このクラスによって格納されるオブジェクトは、抽象基底クラス RWCollectable から継承しなければなりません。挿入した順番で、ベクトルの順序が決まります。

  このクラスはポインタベクトルとして実装されるので、コレクション内の走査はクラス RWBinaryTree を使用する場合よりも効率的です。ただ、コレクションの途中への、挿入速度が遅くなります。

  ベクトルはソートされるため、ベクトルに含まれる要素について、順序を無効にするような変更はしないでください。

### 持続性

  多相

### 例

      // sortrec.cpp
      #include <rw/sortvec.h>
      #include <rw/collstr.h>
      #include <rw/rstream.h>

      main(){
         RWSortedVector sv;
         sv.insert(new RWCollectableString("dog"));
         sv.insert(new RWCollectableString("cat"));
         sv.insert(new RWCollectableString("fish"));
         RWSortedVectorIterator next(sv);
         RWCollectableString* item;
         while( item = (RWCollectableString*)next() )
           cout << *item << endl;
         sv.clearAndDestroy();
      }

  #### プログラム出力:

      cat
      dog
      fish

### 公開コンストラクタ

      RWSortedVector(size_t size = RWDEFAULT_CAPACITY);

    `size` 項目の初期容量を持った空の RWSortedVector を作成します。容量は必要に応じて自動的に増加します。

### 公開メンバー演算子

      RWBoolean
      operator==(const RWSortedVector& sv) const;

    自分自身内のすべての項目について、`sv` 内の同じインデックスの項目が `isEqual` ならば、`TRUE` を返します。両方のコレクションは、同じ数のメンバーを持っていなければなりません。

      const RWCollectable*
      operator[](size_t i);

    コレクション内の `i` 番目の要素を返します。`i` が範囲外にあると RWBoundsErr 型の例外が発生します。この関数の結果は左辺値として使用できます。

      const RWCollectable*
      operator()(size_t i);

    コレクション内の `i` 番目の要素を返します。ヘッダファイル `sortvec.h` を取り込む前に前処理マクロ `RWBOUNDS_CHECK` を定義することで、境界検査が可能になります。この場合、`i` が範囲外にあると RWBoundsErr 型の例外が発生します。この関数の結果は、左辺値として使用できます。

### 公開メンバー関数

      virtual void
      apply(RWapplyCollectable ap, void* x);

    クラス RWOrdered から継承した関数。

      virtual const RWCollectable*
      at(size_t i) const;

    クラス RWOrdered から継承した関数。

      virtual RWspace
      binaryStoreSize() const;

    クラス RWCollection から継承した関数。

      virtual void
      clear();

    クラス RWOrdered から継承した関数。

      virtual void
      clearAndDestroy();

    クラス RWCollection から継承した関数。

      virtual int
      compareTo(const RWCollectable* a) const;

    クラス RWCollectable から継承した関数。

      virtual RWBoolean
      contains(const RWCollectable* target) const;

    クラス RWCollection から継承した関数。

      virtual size_t
      entries() const;

    クラス RWOrdered から継承した関数。

      virtual RWCollectable*
      find(const RWCollectable* target) const;

    クラス RWOrdered から継承した関数。`RWOrdered::find()` は、仮想関数 `index()` を使用して探索を実行するので、2 分探索を行うことになります。

      virtual RWCollectable*
      first() const;

    クラス RWOrdered から継承した関数。

      virtual unsigned
      hash() const;

    クラス RWCollectable から継承した関数。

      virtual size_t
      index(const RWCollectable*) const;

    クラス RWOrdered から再定義した関数。2 分探索を実行して、ターゲットの項目と等しい最初の項目のインデックスを返すか、等しい項目がなければ `RW_NPOS` を返します。

      virtual RWCollectable*
      insert(RWCollectable* c);

    クラス から再定義した関数。2 分探索を行い、項目 `c` を、その項目と等しいかそれより小さいすべての項目の後ろで、かつその項目より大きいすべての項目の前に挿入します。挿入が失敗すると `NULL` を、成功すると `c` を返します。

      virtual RWClassID
      isA() const;

    クラス RWOrdered RWBoolean から再定義した関数。`__RWSORTEDVECTOR` を返します。

      virtual RWBoolean
      isEmpty() const;

    クラス RWOrdered から継承した関数。

      virtual RWBoolean
      isEqual(const RWCollectable* a) const;

    クラス RWCollectable から継承した関数。

      virtual RWCollectable*
      last() const;

    クラス RWOrdered から継承した関数。

      virtual size_t
      occurrencesOf(const RWCollectable* target) const;

    クラス RWOrdered から再定義した関数。項目 `target` と等しい項目の数を返します。

      virtual RWCollectable*
      remove(const RWCollectable* target);

    クラス RWOrdered から継承した関数。`RWOrdered::remove()` は、仮想関数 `index()` を使用して探索を実行するので、2 分探索を行うことになります。

      virtual void
      removeAndDestroy(const RWCollectable* target);

    クラス `RWCollection` から継承した関数。

      RWCollectable*
      removeAt(size_t index);

    クラス RWOrdered から継承した関数。コレクションにおいて位置インデックスにある項目を削除し、それを返します。