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

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


RWGOrderedVector(val)

形式

#include <rw/gordvec.h>
declare(RWGVector,val)
declare(RWGOrderedVector,val)
implement(RWGVector,val)
implement(RWGOrderedVector,val)

RWGOrderedVector(val) v;// 型 val のオブジェクトから成る順序付きベクトル

説明

このクラスは、型 val のオブジェクトから成る順序付きコレクションを表します。オブジェクトは、挿入順に順序が決まり、インデックスでアクセスできます。要素の重複は許可されています。標準 C++ ヘッダファイル <generic.h> で定義されているマクロを使用して、ベクトルとして実装されます。このクラスは値にもとづくコレクションなので注意してください。項目をコレクションにコピーしたり取り出したりします。

クラス val には次のものが必要です。

このクラスを使用するには、クラス自身だけでなくその基底クラスも宣言および実装しなければなりません。倍精度実数の順序付けられたコレクションを宣言および実装する方法を示します。

declare(RWGVector,double) // 基底クラスの宣言

declare(RWGOrderedVector,double) // 順序付きベクトルの宣言

// 1 つの .cc ファイルだけに、次のように記述しなければなりません。

implement(RWGVector,double) // 基底クラスの実装

implement(RWGOrderedVector,double) // 順序付きベクトルの実装

RWGOrderedVector のすべての型で、RWGOrderedVector とその基底クラス RWGVector の両方について、コードのどこかでマクロ implement に対する呼び出しを 1 回だけ行う必要があります。

持続性

なし

RWCString から成る順序付きベクトルを使用する例を示します。

#include <rw/gordvec.h>
#include <rw/cstring.h>
#include <rw/rstream.h>

declare(RWGVector,RWCString)
declare(RWGOrderedVector,RWCString)
implement(RWGVector,RWCString)
implement(RWGOrderedVector,RWCString)

main()  {
  RWGOrderedVector(RWCString) vec;

  RWCString one("First");
  vec.insert(one);

  vec.insert("Second");   // 自動型変換が行われる
  vec.insert("Last");     // 自動型変換が行われる

  for(size_t i=0; i<vec.entries(); i++)  cout << vec[i] << endl;

  return 0;
}

プログラム出力:

First
Second
Last

公開コンストラクタ

RWGOrderedVector(val)(size_t capac=RWDEFAULT_CAPACITY);

val の要素から成る順序付きベクトルを作成します。ベクトルの初期容量は capac で、デフォルト値は RWDEFAULT_CAPACITY になります。挿入される項目が容量を超えそうな場合、容量は自動的に増加されます。このとき各項目を新しい記憶領域にコピーする必要があるので、時間がかなりかかります。

公開メンバー関数

val
operator()(size_t i) const;
val&
operator()(size_t i);

ベクトル内の i 番目の値を返します。インデックス i は 0 〜 (ベクトル長 -1) の範囲になければなりません。境界検査は行いません。2 番目に記述した可変要素を左辺値として使用できますが、1 番目に記述したものは使用できません。

val
operator[](size_t i) const;
val&
operator[](size_t i);

ベクトル内の i 番目の値を返します。インデックス i は 0 〜 (ベクトル長 -1) の範囲になければなりません。境界検査を行います。2 番目に記述した可変要素を左辺値として使用できますが、1 番目に記述したものは使用できません。

void
clear();

コレクションからすべての項目を取り除きます。

const val*
data() const;

自分自身の raw データへのポインタを返します。注意して使用してください。

size_t
entries() const;

現在、コレクションにある項目の数を返します。

size_t
index(val item) const;

コレクションの線形探索を行い、引数 item と等しい最初の項目のインデックスを返します。等しい項目がなければ RW_NPOS を返します。

void
insert(val item);

新しい値 item をコレクションの最後に追加します。

void
insertAt(size_t indx, val item);

コレクション内のインデックス位置 indx に新しい値 item を追加します。indx の値は 0 〜 (コレクションの長さ) の範囲になければなりません。境界検査は行いません。インデックス indx 以降の項目は、より高いインデックス位置に順次移動します。

RWBoolean
isEmpty() const;

コレクション内に項目がまったくなければ TRUE を、あれば FALSE を返します。

void
size_t
length() const;

entries() の同意語。

val
pop();

ベクトルの最後の項目を削除し、返します。

void
push(val);

insert() の同意語。

void
removeAt(size_t indx);

インデックス位置 indx にある項目をコレクションから取り除きます。indx の値の範囲は 0 〜 (コレクションの長さ -1) です。境界検査は行いません。インデックス indx+1 以降の項目は、より低いインデックス位置に順次移動します。たとえば indx+1 にある項目は indx に移動し、それ以降の項目も同様に前に移動します。

void
resize(size_t newCapacity);

コレクションの容量を newCapacity に変更します。newCapacity は、コレクションの現在の項目数以上でなければなりません。コレクション内の実際の項目数は変わらず、容量だけが変わるので注意してください。