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

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


RWTBitVec<size>

形式

#include <rw/tbitvec.h>
RWTBitVec<22>   // 1 個の 22 ビット長のベクトル

説明

RWTBitVec<size> は、固定長 size のパラメータ化されたビットベクトルです。クラス RWBitVec と違って、実行時に長さを変更できません。この RWTBitVec の長所はサイズが小さいことと、間接演算 (indirection) の段階が 1 つ少ないため、処理速度が多少上がることです。

ビットには、0 〜 size-1 (両端含む) の番号が付きます。

コピーコンストラクタと代入演算子の両方で、コピーの意味を使用します。

持続性

なし

次の例は、24 ビット長のビットベクトルを処理しています。

#include <rw/tbitvec.h>

main() {
  RWTBitVec<24> a, b;     // 2 個のベクトルを割り当てる
  a(2) = TRUE;   // a のビット 2 (第 3 ビット) をオンに設定する
  b(3) = TRUE;   // b のビット 3 (第 4 ビット) をオンに設定する
  RWTBitVec<24> c = a ^ b;       // c に a と b の排他的論理和を設定する
}

公開コンストラクタ

RWTBitVec<size>();

すべてのビットを FALSE に設定したインスタンスを作成します。

RWTBitVec<size>(RWBoolean val);

すべてのビットを val に設定したインスタンスを作成します。

代入演算子

RWTBitVec<size>&
operator=(const RWTBitVec<size>& v);

自分自身に v のコピーを設定します。

RWTBitVec&
operator=(RWBoolean val);

自分自身内のすべてのビットに val を設定します。

RWTBitVec&
operator&=(const RWTBitVec& v);
RWTBitVec&
operator^=(const RWTBitVec& v);
RWTBitVec&
operator|=(const RWTBitVec& v);

論理代入演算子。自分自身の各ビットに、自分自身と v の対応ビットとのビット毎の論理積、排他的論理和、論理和をそれぞれ設定します。

RWBitRef
operator[](size_t i);

自分自身の i 番目のビットへの参照を返します。この参照は左辺値として使用できます。インデックス i は、0 〜 (size -1) (両端を含む) の範囲になければなりません。インデックスの境界検査を行います。

RWBitRef
operator()(size_t i);

自分自身の i 番目のビットへの参照を返します。この参照は左辺値として使用できます。インデックス i は、0 〜 (size -1) (両端を含む) の範囲になければなりません。境界検査は行いません。

論理演算子

RWBoolean
operator==(RWBoolean b) const;

自分自身のすべてのビットに値 b が設定されていれば TRUE を、それ以外の場合は FALSE を返します。

RWBoolean
operator!=(RWBoolean b) const;

自分自身のいずれのビットにも値 b が設定されていなければ TRUE を、それ以外の場合は FALSE を返します。

RWBoolean
operator==(const RWTBitVec& v) const;

自分自身の各ビットに v 内の対応ビットと同じ値が設定されていれば TRUE を、それ以外の場合は FALSE を返します。

RWBoolean
operator!=(const RWTBitVec& v) const;

自分自身のいずれのビットにも v 内の対応ビットと同じ値が設定されていなければ TRUE を、それ以外の場合は FALSE を返します。

void
clearBit(size_t i);

インデックス i のビットをクリア (FALSE に設定) します。インデックス i は 0 〜 (size -1) の範囲になければなりません。境界検査は行いません。次の 2 行は同じ意味を持ちます。ただし、clearBit(size_t) の方が operator()(size_t) を使用するより多少小さくて高速です。

   a(i) = FALSE;
   a.clearBit(i);
const RWByte*
data() const;

自分自身の生データへの const ポインタを返します。この関数の使用には注意を要します。

size_t
firstFalse() const;

自分自身の中で最初のオフ (FALSE) のインデックスを返します。オフビットがなければ RW_NPOS を返します。

size_t
firstTrue() const;

自分自身の中で最初のオン (TRUE) のインデックスを返します。オンビットがなければ RW_NPOS を返します。

void
setBit(size_t i);

インデックス i のビットを設定 (TRUE に設定) します。インデックス i は 0 〜 (size -1) の範囲になければなりません。境界検査は行いません。次の 2 行は同じ意味を持ちます。ただし、setBit(size_t) の方が operator()(size_t) を使用するより多少小さくて高速です。

    a(i) = TRUE;
    a.setBit(i);
RWBoolean
testBit(size_t i) const;

インデックス i のビットをテストします。インデックス i は 0 〜 (size -1) の範囲になければなりません。境界検査は行いません。次の 2 行は同じ意味を持ちます。ただし、testBit(size_t) の方が operator()(size_t) を使用するよりも多少小さくて高速です。

    if( a(i) ) doSomething();
    if( a.testBit(i) ) doSomething();

関連の大域関数

RWTBitVec operator&(const RWTBitVec& v1, const RWTBitVec& v2);
RWTBitVec operator^(const RWTBitVec& v1, const RWTBitVec& v2);
RWTBitVec operator|(const RWTBitVec& v1, const RWTBitVec& v2);

ベクトル v1v2 とのビット毎の論理積、排他的論理和、論理和をそれぞれ返します。