概要
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() )
QBitArray ba(2);
ba.setBit(1);
//ab = { 0, 1 }
qDebug() << ba.toggleBit(0); //false
qDebug() << ba.toggleBit(1); //true
//ab = { 1, 0 }
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を返します。
QBitArray().isEmpty(); // returns true
QBitArray(0).isEmpty(); // returns true
QBitArray(3).isEmpty(); // returns false
bool QBitArray::isNull() const
QBitArray オブジェクトが null の場合はtrue、そうでない場合はfalseを返します。
QBitArray().isNull(); // returns true
QBitArray(0).isNull(); // returns false
QBitArray(3).isNull(); // returns false
ビット配列の大きさを取得・変更する
int QBitArray::count() const
int QBitArray::size() const
ビット配列の要素数を返します。
void QBitArray::resize(int size)
ビット配列の大きさを変更します。
size が現在の大きさより大きい場合、末尾に要素を追加していき、falseで初期化します。
size が現在の大きさより小さい場合、末尾から要素を削除していきます。
QBitArray ba(10);
ba.resize(20);
qDebug() << ba.size(); //20 インデックスは0~19
ba.resize(5);
qDebug() << ba.size(); //5 インデックスは0~4
void QBitArray::truncate(int pos)
インデックス pos にビット配列を切り縮めます。
pos がビット配列の末尾を超えている場合は何もしません。
QBitArray ba(10);
qDebug() << ba.size(); //10 インデックスは0~9
ba.truncate(5);
qDebug() << ba.size(); //5 インデックスは0~4
ビット配列の要素を変更する
bool QBitArray::fill(bool value, int size = -1)
ビット配列のすべての要素を value の値に設定します。
成功場合はtrue、そうでない場合はfalseを返します。
size が-1(デフォルト値)以外に設定されている場合、ビット配列は size へ事前にリサイズされます。
QBitArray ba(8);
ba.fill(true);
//ba: [ 1, 1, 1, 1, 1, 1, 1, 1 ]
ba.fill(false, 2);
//ba: [ 0, 0 ]
void QBitArray::fill(bool value, int begin, int end)
インデックス begin からインデックス end までを value の値に設定します。
begin 及び end はビット配列における有効なインデックスである必要があります。
( 0 <= begin <= size() and 0 <= end <= size() )
QBitArray ba(8);
ba.fill(true,0,5);
//ba: [ 1, 1, 1, 1, 1, 0, 0, 0 ]
その他
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 オブジェクトで返します。
QBitArray a(3);
QBitArray b(2);
a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
a &= b; // a: [ 1, 0, 0 ]
QBitArray & QBitArray::operator|=(const QBitArray & other)
other とのOR演算を行い、その結果を QBitArray オブジェクトで返します。
QBitArray a(3);
QBitArray b(2);
a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
a |= b; // a: [ 1, 1, 1 ]
QBitArray & QBitArray::operator^=(const QBitArray & other)
other とのXOR演算を行い、その結果を QBitArray オブジェクトで返します。
QBitArray a(3);
QBitArray b(2);
a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
a ^= b; // a: [ 0, 1, 1 ]
QBitArray QBitArray::operator~() const
NOT演算を行い、その結果を QBitArray オブジェクトで返します。
QBitArray a(3);
QBitArray b;
a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
b = ~a; // b: [ 0, 1, 0 ]
グローバルなビット演算子(QBitArray クラスのメンバではない)
QBitArray operator&(const QBitArray & a1, const QBitArray & a2)
QBitArrayオブジェクト a1 及び a2 でAND演算を行い、その結果を QBitArray オブジェクトで返します。
QBitArray a(3);
QBitArray b(2);
QBitArray c;
a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
c = a & b; // c: [ 1, 0, 0 ]
QBitArray operator|(const QBitArray & a1, const QBitArray & a2)
QBitArrayオブジェクト a1 及び a2 でOR演算を行い、その結果を QBitArray オブジェクトで返します。
QBitArray a(3);
QBitArray b(2);
QBitArray c;
a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
c = a | b; // c: [ 1, 1, 1 ]
QBitArray operator^(const QBitArray & a1, const QBitArray & a2)
QBitArrayオブジェクト a1 及び a2 でXOR演算を行い、その結果を QBitArray オブジェクトで返します。
QBitArray a(3);
QBitArray b(2);
QBitArray c;
a[0] = 1; a[1] = 0; a[2] = 1; // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1; // b: [ 1, 1 ]
c = a ^ b; // c: [ 0, 1, 1 ]
データストリーム
[[QDataStream]] & operator<<(QDataStream & out, const QBitArray & ba)
QDataStream & operator>>(QDataStream & in, QBitArray & ba)
最終更新:2014年08月19日 12:13