QBitArray Class
QBitArrayクラスはビットの配列を提供する。詳細...
ヘッダー | #include <QBitArray> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバのリスト
- QBitArrayは暗黙的に共有されるクラスの一部です。
このクラスは等価比較可能です。
注意:このクラスの関数はすべてリエントラントです。
パブリック関数
QBitArray() | |
QBitArray(qsizetype size, bool value = false) | |
QBitArray(const QBitArray &other) | |
QBitArray(QBitArray &&other) | |
bool | at(qsizetype i) const |
const char * | bits() const |
void | clear() |
void | clearBit(qsizetype i) |
qsizetype | count() const |
qsizetype | count(bool on) const |
bool | fill(bool value, qsizetype size = -1) |
void | fill(bool value, qsizetype begin, qsizetype end) |
bool | isEmpty() const |
bool | isNull() const |
void | resize(qsizetype size) |
void | setBit(qsizetype i) |
void | setBit(qsizetype i, bool value) |
qsizetype | size() const |
void | swap(QBitArray &other) |
bool | testBit(qsizetype i) const |
(since 6.0) quint32 | toUInt32(QSysInfo::Endian endianness, bool *ok = nullptr) const |
bool | toggleBit(qsizetype i) |
void | truncate(qsizetype pos) |
QBitArray & | operator&=(QBitArray &&other) |
QBitArray & | operator&=(const QBitArray &other) |
QBitArray & | operator=(QBitArray &&other) |
QBitArray & | operator=(const QBitArray &other) |
QBitRef | operator[](qsizetype i) |
bool | operator[](qsizetype i) const |
QBitArray & | operator^=(QBitArray &&other) |
QBitArray & | operator^=(const QBitArray &other) |
QBitArray & | operator|=(QBitArray &&other) |
QBitArray & | operator|=(const QBitArray &other) |
静的パブリック・メンバー
QBitArray | fromBits(const char *data, qsizetype size) |
関連する非メンバー
bool | operator!=(const QBitArray &lhs, const QBitArray &rhs) |
QBitArray | operator&(QBitArray &&a1, QBitArray &&a2) |
QBitArray | operator&(QBitArray &&a1, const QBitArray &a2) |
QBitArray | operator&(const QBitArray &a1, QBitArray &&a2) |
QBitArray | operator&(const QBitArray &a1, const QBitArray &a2) |
QDataStream & | operator<<(QDataStream &out, const QBitArray &ba) |
bool | operator==(const QBitArray &lhs, const QBitArray &rhs) |
QDataStream & | operator>>(QDataStream &in, QBitArray &ba) |
QBitArray | operator^(QBitArray &&a1, QBitArray &&a2) |
QBitArray | operator^(QBitArray &&a1, const QBitArray &a2) |
QBitArray | operator^(const QBitArray &a1, QBitArray &&a2) |
QBitArray | operator^(const QBitArray &a1, const QBitArray &a2) |
QBitArray | operator|(QBitArray &&a1, QBitArray &&a2) |
QBitArray | operator|(QBitArray &&a1, const QBitArray &a2) |
QBitArray | operator|(const QBitArray &a1, QBitArray &&a2) |
QBitArray | operator|(const QBitArray &a1, const QBitArray &a2) |
QBitArray | operator~(QBitArray a) |
詳細説明
QBitArray は個々のビットにアクセスできる配列で、ビットの配列全体に作用する演算子 (AND,OR,XOR,NOT) を提供する。暗黙の共有(コピー・オン・ライト)を使用することで、メモリ使用量を削減し、不要なデータのコピーを避けることができる。
以下のコードは、false(0)に初期化された200ビットを含むQBitArrayを構築する:
QBitArray ba(200);
ビットをtrueに初期化するには、コンストラクタの第2引数にtrue
を渡すか、後でfill ()を呼び出します。
QBitArrayは、C++の配列と同様に0ベースのインデックスを使用します。特定のインデックス位置のビットにアクセスするには、 operator[]() を使用します。非 const ビット配列では、operator[]() は、代入の左辺で使用できるビットへの参照を返します。例えば
QBitArray ba; ba.resize(3); ba[0] = true; ba[1] = false; ba[2] = true;
技術的な理由から、配列のビットにアクセスするには、operator[]() よりもtestBit() やsetBit() を使用する方が効率的です。例えば
QBitArray ba(3); ba.setBit(0, true); ba.setBit(1, false); ba.setBit(2, true);
QBitArray は、&
(AND),|
(OR),^
(XOR),~
(NOT) のほか、&=
,|=
,^=
をサポートしています。これらの演算子は、同じ名前の組み込み C++ ビット演算子と同じように動作します。例えば
QBitArray x(5); x.setBit(3, true); // x: [ 0, 0, 0, 1, 0 ] QBitArray y(5); y.setBit(4, true); // y: [ 0, 0, 0, 0, 1 ] x |= y; // x: [ 0, 0, 0, 1, 1 ]
歴史的な理由から、QBitArray はヌル・ビット配列と空ビット配列を区別しています。ヌルビット配列は、QBitArrayのデフォルトコンストラクタで初期化されたビット配列です。空のビット配列とは、サイズが 0 のビット配列のことです。ヌルビット配列は常に空ですが、空ビット配列がヌルとは限りません:
QBitArray().isNull(); // returns true QBitArray().isEmpty(); // returns true QBitArray(0).isNull(); // returns false QBitArray(0).isEmpty(); // returns true QBitArray(3).isNull(); // returns false QBitArray(3).isEmpty(); // returns false
isNull() を除くすべての関数は、ヌルビット配列を空ビット配列と同じように扱います。例えば、QBitArray() は QBitArray(0) と等しいと比較します。常にisEmpty() を使用し、isNull() を避けることを推奨する。
QByteArray およびQListも参照のこと 。
メンバ関数のドキュメント
QBitArray &QBitArray::operator&=(QBitArray &&other)
QBitArray &QBitArray::operator&=(const QBitArray &other)
このビット配列のすべてのビットとother との AND 演算を行います。結果をこのビット配列に代入し、その参照を返す。
結果は、2つのビット配列のうち最も長い方のビット長を持ち、(一方のビット配列が他方のビット配列より短い場合)足りないビットは0とみなされる。
例
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 ]
operator&()、operator|=()、operator^=()、operator~()も参照の こと。
QBitArray &QBitArray::operator|=(QBitArray &&other)
QBitArray &QBitArray::operator|=(const QBitArray &other)
このビット配列のすべてのビットとother との OR 演算を行う。結果をこのビット配列に代入し、その参照を返す。
結果は、2つのビット配列のうち最も長い方のビット長を持ち、欠落しているビット(一方のビット配列が他方のビット配列より短い場合)は0とみなされる。
例
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 ]
operator|()、operator&=()、operator^=()、operator~()も参照の こと。
QBitArray &QBitArray::operator^=(QBitArray &&other)
QBitArray &QBitArray::operator^=(const QBitArray &other)
このビット配列のすべてのビットとother との XOR 演算を行います。結果をこのビット配列に代入し、その参照を返す。
結果は、2つのビット配列のうち最も長い方のビット長を持ち、欠落したビット(一方のビット配列が他方のビット配列より短い場合)は0とみなされる。
例
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 ]
operator^()、operator&=()、operator|=()、operator~()も参照の こと。
[noexcept]
QBitArray::QBitArray()
空のビット配列を構築する。
isEmpty()も参照 。
[explicit]
QBitArray::QBitArray(qsizetype size, bool value = false)
size ビットを含むビット配列を構築する。ビットはvalue で初期化され、デフォルトは false (0) です。
[noexcept]
QBitArray::QBitArray(const QBitArray &other)
other のコピーを構築する。
QBitArrayは暗黙的に共有されるため、この操作には一定の時間がかかる。これにより、関数からQBitArrayを返すのが非常に高速になります。共有インスタンスが変更された場合、それはコピーされ(copy-on-write)、線形時間がかかります。
operator=()も参照してください 。
[noexcept]
QBitArray::QBitArray(QBitArray &&other)
Move-QBitArrayインスタンスを構築し、other が指していたのと同じオブジェクトを指すようにする。
bool QBitArray::at(qsizetype i) const
インデックス位置i にあるビットの値を返す。
i は、ビット配列の有効なインデックス位置でなければならない(すなわち、0 <= < ())。i size
operator[]()も参照 。
const char *QBitArray::bits() const
このQBitArray の密なビット配列へのポインタを返します。ビットは、各バイトの最下位ビットから上にカウントされます。最後のバイトのビット数はsize() % 8
で与えられる。
void QBitArray::clear()
ビット配列の内容をクリアして空にする。
void QBitArray::clearBit(qsizetype i)
インデックス位置i のビットを 0 にする。
i は、ビット配列の有効なインデックス位置でなければならない(すなわち、0 <= < ())。i size
setBit() およびtoggleBit()も参照のこと 。
qsizetype QBitArray::count() const
size() と同じ。
qsizetype QBitArray::count(bool on) const
on が真の場合、この関数はビット配列に格納されている1ビットの数を返し、そうでない場合は0ビットの数を返す。
bool QBitArray::fill(bool value, qsizetype 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 ]
resize()も参照 。
void QBitArray::fill(bool value, qsizetype begin, qsizetype end)
これはオーバーロードされた関数である。
end からvalue までのインデックス位置begin のビットを設定する。
begin はビット配列の有効なインデックス位置でなければなりません(0 <= < ())。begin size
end は、有効なインデックス位置であるか、または () と等しいかのいずれかでなければなりません。この場合、fill 演算は配列の最後まで実行されます (0 <= <= ())。size end size
例
QBitArray ba(4); ba.fill(true, 1, 2); // ba: [ 0, 1, 0, 0 ] ba.fill(true, 1, 3); // ba: [ 0, 1, 1, 0 ] ba.fill(true, 1, 4); // ba: [ 0, 1, 1, 1 ]
[static]
QBitArray QBitArray::fromBits(const char *data, qsizetype size)
data に位置する密なビット配列で、size ビットを持つQBitArray を作成する。data のバイト配列は、少なくともsize / 8(切り上げ)バイト長でなければならない。
size が 8 の倍数でない場合、この関数はdata の最後のバイトから最低のsize % 8 ビットを含む。
bits()も参照 。
bool QBitArray::isEmpty() const
このビット配列のサイズが 0 の場合はtrue
を返し、そうでない場合は false を返す。
size()も参照 。
bool QBitArray::isNull() const
このビット配列がNULLの場合はtrue
を返し、そうでない場合はfalse
を返す。
例を示します:
QBitArray().isNull(); // returns true QBitArray(0).isNull(); // returns false QBitArray(3).isNull(); // returns false
Qtは歴史的な理由から、NULLビット配列と空のビット配列を区別しています。ほとんどのアプリケーションで重要なのは、ビット配列にデータが含まれているかどうかであり、これはisEmpty() を使って判断することができます。
isEmpty()も参照してください 。
void QBitArray::resize(qsizetype size)
ビット配列をsize ビットにリサイズする。
size が現在のサイズより大きい場合、ビット配列は拡張され、余分なビットが最後に追加されてsize ビットになる。新しいビットは偽(0)に初期化される。
size が現在のサイズより小さい場合、ビットは末尾から取り除かれる。
size()も参照のこと 。
void QBitArray::setBit(qsizetype i)
インデックス位置i のビットを 1 に設定する。
i は、ビット配列の有効なインデックス位置でなければならない(すなわち、0 <= < ())。i size
clearBit() およびtoggleBit()も参照のこと 。
void QBitArray::setBit(qsizetype i, bool value)
これはオーバーロードされた関数である。
インデックス位置i のビットをvalue に設定する。
qsizetype QBitArray::size() const
ビット配列に格納されているビット数を返します。
resize()も参照 。
[noexcept]
void QBitArray::swap(QBitArray &other)
このビット配列をother と入れ替える。この操作は非常に高速で、失敗することはない。
bool QBitArray::testBit(qsizetype i) const
インデックス位置i のビットが 1 の場合はtrue
を返し、そうでない場合はfalse
を返す。
i は、ビット配列の有効なインデックス位置でなければならない(すなわち、0 <= < ())。i size
setBit() およびclearBit()も参照のこと 。
[noexcept, since 6.0]
quint32 QBitArray::toUInt32(QSysInfo::Endian endianness, bool *ok = nullptr) const
int に変換されたビットの配列を返す。変換はendianness に従う。配列の最初の32ビットまでをquint32
に変換し,endianness に従ってそれを返す。ok が NULL ポインタでなく、配列が 32 ビット以上の場合、ok は false に設定され、この関数は 0 を返します。それ以外の場合は true に設定されます。
この関数は Qt 6.0 で導入されました。
bool QBitArray::toggleBit(qsizetype i)
インデックスの位置i にあるビットの値を反転し、そのビットの前の値を真(設定されていた場合)または偽(設定されていなかった場合)として返します。
前の値が0だった場合、新しい値は1になります。前の値が1だった場合、新しい値は0になります。
i は、ビット配列の有効なインデックス位置でなければならない(すなわち、0 <= < ())。i size
setBit() およびclearBit()も参照の こと。
void QBitArray::truncate(qsizetype pos)
インデックス位置pos でビット配列を切り捨てる。
pos が配列の終端を超えている場合は、何も起こらない。
resize()も参照 。
[noexcept]
QBitArray &QBitArray::operator=(QBitArray &&other)
other をこのビット配列に移動し、このビット配列への参照を返す。
[noexcept]
QBitArray &QBitArray::operator=(const QBitArray &other)
このビット配列にother を代入し、このビット配列への参照を返す。
QBitRef QBitArray::operator[](qsizetype i)
インデックス位置i のビットを変更可能な参照として返す。
i は、ビット配列の有効なインデックス位置でなければなりません(すなわち、0 <= < ())。i size
例
QBitArray a(3); a[0] = false; a[1] = true; a[2] = a[0] ^ a[1];
戻り値は、QBitArray のヘルパークラスである QBitRef 型です。QBitRef型のオブジェクトを取得すると、そのオブジェクトに代入することができ、その代入は参照を取得したQBitArray のビットに適用されます。
関数testBit()、setBit()、clearBit() の方が若干高速です。
at()、testBit()、setBit()、clearBit()も参照の こと。
bool QBitArray::operator[](qsizetype i) const
これはオーバーロードされた関数である。
関連する非会員
QBitArray operator&(QBitArray &&a1, QBitArray &&a2)
QBitArray operator&(QBitArray &&a1, const QBitArray &a2)
QBitArray operator&(const QBitArray &a1, QBitArray &&a2)
QBitArray operator&(const QBitArray &a1, const QBitArray &a2)
ビット配列a1 とa2 を AND したビット配列を返す。
結果は、2つのビット配列のうち最も長いビット配列の長さを持ち、欠落したビット(一方の配列が他方の配列より短い場合)は0とみなされる。
例
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 ]
operator&=()、operator|()、operator^()も参照のこと 。
QBitArray operator|(QBitArray &&a1, QBitArray &&a2)
QBitArray operator|(QBitArray &&a1, const QBitArray &a2)
QBitArray operator|(const QBitArray &a1, QBitArray &&a2)
QBitArray operator|(const QBitArray &a1, const QBitArray &a2)
ビット配列a1 とa2 の OR をビット配列として返す。
結果は、2つのビット配列のうち最も長いビット配列の長さを持ち、欠落したビット(一方の配列が他方の配列より短い場合)は0とみなされる。
例
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|=()、operator&()、operator^()も参照のこと 。
QBitArray operator^(QBitArray &&a1, QBitArray &&a2)
QBitArray operator^(QBitArray &&a1, const QBitArray &a2)
QBitArray operator^(const QBitArray &a1, QBitArray &&a2)
QBitArray operator^(const QBitArray &a1, const QBitArray &a2)
ビット配列a1 とa2 の XOR をビット配列として返す。
結果は、2つのビット配列のうち最も長いビット配列の長さを持ち、欠落したビット(一方の配列が他方の配列より短い場合)は0とみなされる。
例:
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 ]
operator^=() 、operator&() 、operator|()も参照のこと 。
[noexcept]
bool operator!=(const QBitArray &lhs, const QBitArray &rhs)
lhs がrhs のビット配列と等しくない場合はtrue
を返し、そうでない場合はfalse
を返す。
operator==()も参照のこと 。
QDataStream &operator<<(QDataStream &out, const QBitArray &ba)
ビット配列ba をストリームout に書き込みます。
QDataStream 演算子のフォーマットも参照してください 。
[noexcept]
bool operator==(const QBitArray &lhs, const QBitArray &rhs)
lhs がrhs のビット配列と等しい場合はtrue
を返し、そうでない場合はfalse
を返す。
operator!=()も参照のこと 。
QDataStream &operator>>(QDataStream &in, QBitArray &ba)
ストリームin からビット配列をba に読み込みます。
QDataStream 演算子のフォーマットも参照してください 。
QBitArray operator~(QBitArray a)
ビット配列a の反転ビットを含むビット配列を返します。
例:
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.