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

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


RWTValDeque<T>

形式

#include <rw/tvdeque.h>
RWTValDeque<T> deq;

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


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

説明

このクラスは、両終端キュー、すなわち deque として実装されている値のコレクションを維持します。要素の順序は外部で決定され、要素にはインデックスを使ってアクセスできます。挿入と削除が通常コレクションの最初か最後で実行されるときに、このクラスを使います。

持続性

同形

この例では、int のダブル終了キューを使用しています。

//
// tvdqint.cpp
//
#include <rw/tvdeque.h>
#include <iostream.h>

/*
 * このプログラムは整数を奇数と偶数に分ける
 */

int main(){
  RWTValDeque<int> numbers;

  int n;

  cout << "Input an assortment of integers (EOF to end):"
       << endl;
  while (cin >> n) {
    if (n % 2 == 0)
      numbers.pushFront(n);
    else
      numbers.pushBack(n);
  }
  while (numbers.entries()) {
    cout << numbers.popFront() << endl;
  }

  return 0;
}

プログラム入力:

1 2 3 4 5
<eof>

プログラム出力:

4
2
1
3
5

関連クラス

クラス RWTValSlist<T>RWTValDlist<T>RWTValSortedDlist<T>RWTValOrderedVector<T> も、C++ 標準シーケンスコレクションへの Rogue Wave インタフェースを提供します。コレクション内部で頻繁に実行される挿入 (あるいは削除) に対しては、リストクラスを考慮しなければなりません。ほとんどの挿入と削除がコレクションの最後で実行される場合は、ベクトルの方が効率的と言えます。

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

公開 Typedef

typedef deque<T,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 T&                                  reference;
typedef const T&                            const_reference;

公開コンストラクタ

RWTValDeque<T>();

空の両終端キューを作成します。

RWTValDeque<T>(const deque<T,allocator>& deq);

deq のすべての要素をコピーすることによって、ダブルキューを作成します。

RWTValDeque<T>(const RWTValDeque<T>& rwdeq);

コピーコンストラクタ。

RWTValDeque<T>(size_type n, const T& val = T());

それぞれが val に初期化された n 個の要素を持つダブルキューを作成します。

RWTValDeque<T>(const T* first, const T* last);

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

公開メンバー演算子

RWTValDeque<T>&
operator=(const RWTValDeque<T,allocator>& deq);
RWTValDeque<T>&
operator=(const deque<T>& deq);

自分自身のすべての要素上でデストラクタを呼び出し、deq のすべての要素をコピーすることによって、それらを置き換えます。

bool
operator<(const RWTValDeque<T>& deq) const;
bool
operator<(const deque<T,allocator>& deq) const;

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

bool
operator==(const RWTValDeque<T>& deq) const;
bool
operator==(const deque<T,allocator>& deq) const;

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

reference
operator()(size_type i);
const_reference
operator()(size_type i) const;

自分自身の i 番目の要素への参照を返します。インデックス i は、0 〜 (エントリ数 -1) の範囲内でなければなりません。それ以外の場合の結果は定義されていません。境界検査は実行されません。

reference
operator[](size_type i);
const_reference
operator[](size_type i) const;

自分自身の i 番目の要素への参照を返します。インデックス i は、0 〜 (自分自身のエントリ数 -1 ) の範囲内でなければなりません。それ以外の場合、この関数は、型 RWBoundsErr の例外を送出します。

公開メンバー関数

void
append(const_reference a);

コレクション内の最後に項目 a を追加します。

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

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

   void yourfun(const_reference a, void* d);
   void yourfun(reference a, void* d);

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

reference
at(size_type i);
const_reference
at(size_type i) const;

自分自身の i 番目の要素への参照を返します。インデックス i は、0 〜 (自分自身内のエントリ数 -1 ) の範囲内でなければなりません。それ以外の場合、この関数は、型 RWBoundsErr の例外を送出します。

iterator
begin();
const_iterator
begin() const;

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

void
clear();

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

bool
contains(const_reference a) const;

自分自身内に式 (t == a)TRUE になるような要素 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 を通して渡すことができます。

iterator
end();
const_iterator
end() const;

自分自身の「終端を越えた」の反復子を返します。

size_type
entries() const;

自分自身内の要素数を返します。

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

自分自身内に式 (t == a)TRUE になるような要素 t が存在する場合は、tk に代入し、TRUE を返します。それ以外の場合は、FALSE を返し、k の値は変更しません。

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

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

   bool yourTester(const_reference a, void* d);

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

reference
first();
const_reference
first() const;

自分自身内の最初の要素への参照を返します。

size_type
index(const_reference a) const;

(t == a)TRUE になるような自分自身内の最初の項目 t の位置を返します。そのような項目が存在しない場合は、静的メンバー npos を返します。

size_type
index(bool (*fn)(const_reference,void*), void* d) const;

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

   bool yourTester(const_reference a, void* d);

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

bool
insert(const_reference a);

コレクション内の最後に項目 a を追加します。TRUE を返します。

void
insertAt(size_type i, const_reference a);

自分自身内の位置 i にある項目の前に項目 a を挿入します。この位置は 0 〜 (コレクション内のエントリ数) の範囲内でなければなりません。それ以外の場合、この関数は、型 RWBoundsErr の例外を送出します。

bool
isEmpty() const;

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

reference
last();
const_reference
last() const;

コレクション内の最後の項目への参照を返します。

reference
maxElement();
const_reference
maxElement() const;
reference
minElement();
const_reference
minElement() const;

コレクション内の最小要素または最大要素への参照を返します。型 T に明確に規定された less-than 意味論 (T::operator<(const T&) または同等のもの) が必要です。

size_type
occurrencesOf(const_reference a) const;

(t == a)TRUE になるような自分自身内の要素 t の数を返します。

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

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

   bool yourTester(const_reference a, void* d);

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

void
prepend(const_reference a);

コレクション内の最初に項目 a を追加します。

T
popBack();

コレクション内の最後の項目を削除して返します。

T
popFront();

コレクション内の最初の項目を削除して返します。

void
pushBack(const_reference a);

コレクション内の最後に項目 a を追加します。

void
pushFront(const_reference a);

コレクション内の最初に項目 a を追加します。

bool
remove(const_reference a);

(t == a)TRUE になるような自分自身内の最初の要素 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);

(t == a)TRUE になるような自分自身内の要素 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 を通して渡すことができます。

T
removeAt(size_type i);

自分自身内の位置 i にある項目を削除して返します。この位置は 0 〜 (コレクション内のエントリ数 -1) の範囲内でなければなりません。それ以外の場合、この関数は、型 RWBoundsErr の例外を送出します。

T
removeFirst();

コレクション内の最初の項目を削除して返します。

T
removeLast();

コレクション内の最後の項目を削除して返します。

size_type
replaceAll(const T& oldVal, const T& newVal);

(t == oldVal)TRUE になるような自分自身内の要素 t をすべて、newVal に置き換えます。置換した項目数を返します。

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

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

   bool yourTester(const T& a, void* d);

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

void
sort();

要素を比較するために、less-than 演算子 (<) を使用して、コレクションをソートします。

deque<T,allocator>&
std();

const deque<T,allocator>&
std() const;

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

静的公開データメンバー

const size_type  npos;

これは、index などのメンバー関数によって無効な位置を示すために返された値です。この値は、~(size_type)0 と同じです。

関連の大域演算子

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

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

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

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

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

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