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

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


RWTValSet<T,C>

形式

#include <rw/tvset.h>
RWTValSet<T,C> s;

標準 C++ ライブラリ依存


注 - RWTValSet には標準 C++ ライブラリが必要です。

説明

このクラスは、型 C の比較オブジェクトに従って順序が付けられる値のコレクションを維持します。C は、次の公開メンバーを介して、型 T の要素に対する全順序付けを誘導しなければなりません。

    bool operator()(const T& x, const T& y) const
これは、コレクション内において、xy より前になる場合、TRUE を返します。C++ 標準ヘッダーファイル <functional> からの構造体 less<T> がその例です。

RWTValSet<T,C> は、コレクション内の既存の項目と等しい項目は受け付けません (RWTValMultiSet<T,C> には、互いに等しい複数の項目を含めることができます)。等しいかどうかは、== 演算子ではなく、比較オブジェクトにもとづいて判定されます。比較オブジェクト comp を使用するとき、キー ab は次の場合に等しくなります。

    !comp(a,b) && !comp(b,a)

持続性

同形

この例では、RWCString のセットを使用しています。

//
// tvsstr.cpp
//
#include <rw/tvset.h>
#include <rw/cstring.h>
#include <iostream.h>
#include <function.h>

main(){
  RWTValSet<RWCString,less<RWCString> > set;

  set.insert("one");
  set.insert("two");
  set.insert("three");
  set.insert("one");     // 拒絶:すでにコレクション中にある

  cout << set.entries() << endl;     // 「3」を出力する
  return 0;
}

関連クラス

クラス RWTValMultiSet<T,C> は、互いに等しい複数の項目を受け付けるコレクションに対して同じインタフェースを提供します。RWTValMap<K,T,C> は、キー値ペアのコレクションを維持します。

クラス set<T,C,allocator> は、RWTValSet<T,C> の基礎となる実装として使用される C++ 標準コレクションです。

公開 Typedef

typedef set<T,C,allocator>                     container_type;
typedef container_type::iterator               iterator;
typedef container_type::const_iterator         const_iterator;
typedef container_type::size_type              size_type;
typedef T                                      value_type;
typedef const T&                               const_reference;

公開コンストラクタ

RWTValSet<T,C>(const C& comp = C());

空のセットを作成します。

RWTValSet<T,C>(const container_type& s);

s のすべての要素をコピーすることによって、セットを作成します。

RWTValSet<T,C>(const RWTValSet<T,C>& rws);

コピーコンストラクタ。

RWTValSet<T,C>
(const T* first,const T* last,const C& comp = C());

first が指す T の配列から last が指す要素まで (ただし、その要素は含みません)、要素をコピーすることによって、セットを作成します。

公開メンバー演算子

RWTValSet<T,C>&
operator=(const RWTValSet<T,C>& s);
RWTValSet<T,C>&
operator=(const container_type& s);

自分自身のすべての要素を削除し、s のすべての要素をコピーすることによって、それらを置き換えます。

bool
operator<(const RWTValSet<T,C>& s) const;
bool
operator<(const container_type& s) const;

自分自身が辞書形式で s より小さい場合は TRUE を返し、等しいか大きい場合は FALSE を返します。型 T に明確に規定された less-than 意味論 (T::operator<(const T&) または同等のもの) があると仮定します。

bool
operator==(const RWTValSet<T,C>& s) const;
bool
operator==(const set<T,C>& s) const;

自分自身が s と等しい場合は TRUE を返し、それ以外の場合は FALSE を返します。2 つのコレクションのエントリ数が同じで、両方のコレクションを反復したときに個々の要素が互いに等しい場合、両者は等しいと言えます。

公開メンバー関数

void
apply(void (*fn)(const_reference,void*), void* d) const;

fn が指すユーザー定義関数を、コレクション内の各項目に適用します。この関数は次のプロトタイプを持っていなければなりません。

   void yourfun(const_reference a, void* d);

クライアントデータは、パラメータ d を通して渡すことができます。

iterator
begin();
const_iterator
begin() const;

自分自身内の最初の要素の位置にある反復子を返します。

void
clear();

自分自身から項目をすべて削除することによって、コレクションを消去します。各項目のデストラクタを呼び出します。

bool
contains(const_reference a) const;

自分自身内に a と等しい要素 t が存在する場合は TRUE を返し、それ以外の場合は FALSE を返します。

bool
contains(bool (*fn)(const_reference,void*), void* d) const;

自分自身内に式 ((*fn)(t,d))TRUE になるような要素 t が存在する場合は、TRUE を返します。それ以外の場合は、FALSE を返します。fn が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

   bool yourTester(const_reference a, void* d);

クライアントデータは、パラメータ d を通して渡すことができます。

void
difference(const RWTValSet<T,C>& s);
void
difference(const container_type& s);

(self- s) で与えられる差集合を、自分自身に設定します。

iterator
end();
const_iterator
end() const;

自分自身内の最後の要素の「直後」にある反復子を返します。

size_type
entries() const;

自分自身内の項目数を返します。

bool
find(const_reference a, T& k) const;

自分自身内に a と等しい要素 t が存在する場合は、tk に代入し、TRUE を返します。それ以外の場合は、FALSE を返し、k の値は変更しません。

bool
find(bool (*fn)(const_reference,void*), void* d, T& k) const;

自分自身内に式 ((*fn)(t,d))TRUE になるような要素 t が存在する場合は、tk に代入し、TRUE を返します。それ以外の場合は、FALSE を返し、k の値は変更しません。fn が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

   bool yourTester(const_reference a, void* d);

クライアントデータは、パラメータ d を通して渡すことができます。

bool
insert(const_reference a);

項目 a をコレクションに追加します。挿入が正常に行われた場合は TRUE を返し、それ以外の場合は FALSE を返します。コレクションが同値キーとの関連付けを持たない限り、この関数は TRUE を返します。

void
intersection(const RWTValSet<T,C>& s);
void
intersection(const container_type& s);

自分自身と s との積集合に自分自身を設定します。

bool
isEmpty() const;

コレクション内に項目が存在しない場合は TRUE を返し、それ以外の場合は FALSE を返します。

bool
isEquivalent(const RWTValSet<T,C>& s) const;

自分自身と s が集合的に等しい場合は TRUE を返し、それ以外の場合は FALSE を返します。

bool
isProperSubsetOf(const RWTValSet<T,C>& s) const;

自分自身が s の真部分集合の場合は TRUE を返し、それ以外の場合は FALSE を返します。

bool
isSubsetOf(const RWTValSet<T,C>& s) const;

自分自身が s の部分集合である場合は TRUE を返し、それ以外の場合は FALSE を返します。

size_type
occurrencesOf(const_reference a) const;

a と等しい自分自身内の要素 t の数を返します。

size_type
occurrencesOf(bool (*fn)(const T&,void*),void* d) const;

((*fn)(t,d))TRUE になるような自分自身内の要素 t の数を返します。fn が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

   bool yourTester(const_reference a, void* d);

クライアントデータは、パラメータ d を通して渡すことができます。

bool
remove(const_reference a);

a と等しい自分自身内の最初の要素 t を削除し、TRUE を返します。そのような要素が存在しない場合は、FALSE を返します。

bool
remove(bool (*fn)(const_reference,void*), void* d);

((*fn)(t,d))TRUE になるような自分自身内の最初の要素 t を削除し、TRUE を返します。そのような要素が存在しない場合は、FALSE を返します。fn が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

   bool yourTester(const_reference a, void* d);

クライアントデータは、パラメータ d を通して渡すことができます。

size_type
removeAll(const_reference a);

a と等しい自分自身内の要素 t をすべて削除します。削除した項目数を返します。

size_type
removeAll(bool (*fn)(const_reference,void*), void* d);

((*fn)(t,d))TRUE になるような自分自身内の要素 t をすべて削除します。削除した項目数を返します。fn が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

   bool yourTester(const_reference a, void* d);

クライアントデータは、パラメータ d を通して渡すことができます。

set<T,C,allocator>&
std();
const set<T,C,allocator>&
std() const;

自分自身に対する実装として使用される、基礎となる C++ 標準コレクションへの参照を返します。この参照は自由に使用でき、C++ 標準インタフェースへのアクセスを提供したり、C++ 標準コレクションを利用する他のソフトウェアソフトウェアコンポーネントとの相互運用性を提供します。

void
symmetricDifference(const RWTValSet<T,C>& s);
void
symmetricDifference(const container_type& s);

自分自身と s との対称差集合に自分自身を設定します。

void
Union(const RWTValSet<T,C>& s);
void
Union(const container_type& s);

自分自身と s との和集合に自分自身を設定します。C++ の予約語との競合を避けるために、Union の「U」は大文字になっていることに注意してください。

関連の大域演算子

RWvostream&
operator<<(RWvostream& strm, const RWTValSet<T,C>& coll);
RWFile&
operator<<(RWFile& strm, const RWTValSet<T,C>& coll);

出力ストリーム strm にコレクション coll を保存するか、すでに保存されている場合は、そのコレクションに対する参照を保存します。

RWvistream&
operator>>(RWvistream& strm, RWTValSet<T,C>& coll);
RWFile&
operator>>(RWFile& strm, RWTValSet<T,C>& coll);

コレクション coll の内容を入力ストリーム strm から復元します。

RWvistream&
operator>>(RWvistream& strm, RWTValSet<T,C>*& p);
RWFile&
operator>>(RWFile& strm, RWTValSet<T,C>*& p);

入力ストリーム strm 上の次のオブジェクトを調べて、ヒープから新しいコレクションを作成してそれを指すように p を設定するか、または前に読み込んだインスタンスを指すように p を設定します。コレクションをヒープから作成した場合、ユーザーはそれを削除する責任があります。