QBitArray


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

概要

QBitArray クラスはビット配列を提供します。
このクラスはimplicit sharingを利用しています。

メソッド

コンストラクタ

QBitArray::QBitArray()
空の QBitArray オブジェクトを生成します。

QBitArray::QBitArray(int size, bool value = false)
要素数 size の QBitArray オブジェクトを生成します。
各要素は value の値で初期化されます。

コピーコンストラクタ

QBitArray::QBitArray(const QBitArray & other)
implicit sharingを利用しているため、中身は同じになります。

ムーブコンストラクター

QBitArray::QBitArray(QBitArray && other)

値を取得する

bool QBitArray::at(int i) const
インデックス i のビットの値を返します。
i はビット配列における有効なインデックスである必要があります。( 0 <= i < size() )

bool QBitArray::testBit(int i) const
インデックス i の値がtrueの場合はtrue、そうでない場合はfalseを返します。
i はビット配列における有効なインデックスである必要があります。( 0 <= i < size() )

値を変更する

void QBitArray::setBit(int i)
インデックス i にtrueを設定します。

void QBitArray::setBit(int i, bool value)
インデックス i に value の値を設定します。

bool QBitArray::toggleBit(int i)
インデックス i の値を反転させ、以前の値を返します。
i はビット配列における有効なインデックスである必要があります。( 0 <= i < size() )
  1. QBitArray ba(2);
  2. ba.setBit(1);
  3. //ab = { 0, 1 }
  4. qDebug() << ba.toggleBit(0); //false
  5. qDebug() << ba.toggleBit(1); //true
  6. //ab = { 1, 0 }
  7.  

void QBitArray::clear()
ビット配列の中身をクリアし、空にします。

void QBitArray::clearBit(int i)
インデックス i のビットを0にします。
i はビット配列における有効なインデックスである必要があります。( 0 <= i < size() )

添字アクセス

QBitRef QBitArray::operator[](int i)
QBitRef QBitArray::operator[](uint i)
インデックス i の位置にある値を取得または設定できます。
i はビット配列における有効なインデックスである必要があります。( 0 <= i < size() )

bool QBitArray::operator[](int i) const
bool QBitArray::operator[](uint i) const
インデックス i の位置にある値を取得できます。

ビット配列の情報を取得

int QBitArray::count(bool on) const
on = true の場合は、ビット配列中のfalseの数を返します。
on = false の場合は、ビット配列中のtrueの数を返します。

bool QBitArray::isEmpty() const
ビット配列の要素数が0の場合はtrue、そうでない場合はfalseを返します。
  1. QBitArray().isEmpty(); // returns true
  2. QBitArray(0).isEmpty(); // returns true
  3. QBitArray(3).isEmpty(); // returns false
  4.  

bool QBitArray::isNull() const
QBitArray オブジェクトが null の場合はtrue、そうでない場合はfalseを返します。
  1. QBitArray().isNull(); // returns true
  2. QBitArray(0).isNull(); // returns false
  3. QBitArray(3).isNull(); // returns false
  4.  

ビット配列の大きさを取得・変更する

int QBitArray::count() const
int QBitArray::size() const
ビット配列の要素数を返します。

void QBitArray::resize(int size)
ビット配列の大きさを変更します。
size が現在の大きさより大きい場合、末尾に要素を追加していき、falseで初期化します。
size が現在の大きさより小さい場合、末尾から要素を削除していきます。
  1. QBitArray ba(10);
  2. ba.resize(20);
  3. qDebug() << ba.size(); //20 インデックスは0~19
  4. ba.resize(5);
  5. qDebug() << ba.size(); //5 インデックスは0~4
  6.  

void QBitArray::truncate(int pos)
インデックス pos にビット配列を切り縮めます。
pos がビット配列の末尾を超えている場合は何もしません。
  1. QBitArray ba(10);
  2. qDebug() << ba.size(); //10 インデックスは0~9
  3. ba.truncate(5);
  4. qDebug() << ba.size(); //5 インデックスは0~4
  5.  

ビット配列の要素を変更する

bool QBitArray::fill(bool value, int size = -1)
ビット配列のすべての要素を value の値に設定します。
成功場合はtrue、そうでない場合はfalseを返します。
size が-1(デフォルト値)以外に設定されている場合、ビット配列は size へ事前にリサイズされます。
  1. QBitArray ba(8);
  2. ba.fill(true);
  3. //ba: [ 1, 1, 1, 1, 1, 1, 1, 1 ]
  4. ba.fill(false, 2);
  5. //ba: [ 0, 0 ]
  6.  

void QBitArray::fill(bool value, int begin, int end)
インデックス begin からインデックス end までを value の値に設定します。
begin 及び end はビット配列における有効なインデックスである必要があります。
( 0 <= begin <= size() and 0 <= end <= size() )
  1. QBitArray ba(8);
  2. ba.fill(true,0,5);
  3. //ba: [ 1, 1, 1, 1, 1, 0, 0, 0 ]
  4.  

その他

void QBitArray::swap(QBitArray & other)
他のQBitArray オブジェクトと中身を交換します。

演算子

bool QBitArray::operator!=(const QBitArray & other) const
other と異なるビット配列の場合はtrue、そうでない場合はfalseを返します。

bool QBitArray::operator==(const QBitArray & other) const
other と同じビット配列の場合はtrue、そうでない場合はfalseを返します。

QBitArray & QBitArray::operator=(const QBitArray & other)
other を本オブジェクトに代入します。

QBitArray & QBitArray::operator=(QBitArray && other)

ビット演算子

QBitArray & QBitArray::operator&=(const QBitArray & other)
other とのAND演算を行い、その結果を QBitArray オブジェクトで返します。
  1. QBitArray a(3);
  2. QBitArray b(2);
  3. a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
  4. b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
  5. a &= b; // a: [ 1, 0, 0 ]
  6.  

QBitArray & QBitArray::operator|=(const QBitArray & other)
other とのOR演算を行い、その結果を QBitArray オブジェクトで返します。
  1. QBitArray a(3);
  2. QBitArray b(2);
  3. a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
  4. b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
  5. a |= b; // a: [ 1, 1, 1 ]
  6.  

QBitArray & QBitArray::operator^=(const QBitArray & other)
other とのXOR演算を行い、その結果を QBitArray オブジェクトで返します。
  1. QBitArray a(3);
  2. QBitArray b(2);
  3. a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
  4. b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
  5. a ^= b; // a: [ 0, 1, 1 ]
  6.  

QBitArray QBitArray::operator~() const
NOT演算を行い、その結果を QBitArray オブジェクトで返します。
  1. QBitArray a(3);
  2. QBitArray b;
  3. a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
  4. b = ~a; // b: [ 0, 1, 0 ]
  5.  

グローバルなビット演算子(QBitArray クラスのメンバではない)

QBitArray operator&(const QBitArray & a1, const QBitArray & a2)
QBitArrayオブジェクト a1 及び a2 でAND演算を行い、その結果を QBitArray オブジェクトで返します。
  1. QBitArray a(3);
  2. QBitArray b(2);
  3. QBitArray c;
  4. a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
  5. b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
  6. c = a & b; // c: [ 1, 0, 0 ]
  7.  

QBitArray operator|(const QBitArray & a1, const QBitArray & a2)
QBitArrayオブジェクト a1 及び a2 でOR演算を行い、その結果を QBitArray オブジェクトで返します。
  1. QBitArray a(3);
  2. QBitArray b(2);
  3. QBitArray c;
  4. a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
  5. b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
  6. c = a | b; // c: [ 1, 1, 1 ]
  7.  

QBitArray operator^(const QBitArray & a1, const QBitArray & a2)
QBitArrayオブジェクト a1 及び a2 でXOR演算を行い、その結果を QBitArray オブジェクトで返します。
  1. QBitArray a(3);
  2. QBitArray b(2);
  3. QBitArray c;
  4. a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
  5. b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
  6. c = a ^ b; // c: [ 0, 1, 1 ]
  7.  

データストリーム

QDataStream & operator<<(QDataStream & out, const QBitArray & ba)
QDataStream & operator>>(QDataStream & in, QBitArray & ba)