このページでは

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()
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 )を提供する配列です。暗黙の共有(コピー・オン・ライト)を使用して、メモリ使用量を削減し、データの不必要なコピーを回避します。

以下のコードは、200ビットを含み、すべてfalse(0)に初期化された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 では null ビット配列と空のビット配列を区別しています。nullビット配列とは、QBitArray のデフォルトコンストラクタを使用して初期化されたビット配列のことです。空のビット配列とは、サイズが 0 の任意のビット配列のことです。null ビット配列は常に空ですが、空のビット配列が必ずしも null であるとは限りません:

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も参照してください 。

メンバ関数のドキュメント

[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を返す処理は非常に高速になります。共有されているインスタンスが変更された場合、そのインスタンスはコピーされます(コピー・オン・ライト)が、これには線形時間がかかります。

operator=()も参照してください 。

[noexcept] QBitArray::QBitArray(QBitArray &&other)

QBitArrayのインスタンスをムーブコンストラクタで生成し、other が指していたのと同じオブジェクトを指すようにします。

bool QBitArray::at(qsizetype i) const

インデックス位置i にあるビットの値を返します。

i i はビット配列内の有効なインデックス位置である必要があります(つまり、0 <= < ())。size

operator[]()も参照してください 。

const char *QBitArray::bits() const

このQBitArray に対する高密度ビット配列へのポインタを返します。ビットは、各バイトの最下位ビットから順に数えられます。最後のバイトに含まれる関連ビット数は、size() % 8 で指定されます。

fromBits() およびsize()も参照してください 。

void QBitArray::clear()

ビット配列の内容を消去し、空にします。

resize() およびisEmpty()も参照してください 。

void QBitArray::clearBit(qsizetype i)

インデックス位置i のビットを 0 に設定します。

i i は、ビット配列内の有効なインデックス位置でなければなりません(つまり、0 <= < ())。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)

インデックス位置begin からend まで( は含まない)のビットをvalue に設定します。

begin begin は、ビット配列内の有効なインデックス位置でなければなりません(0 <= < ())。size

end 有効なインデックス位置であるか、size() に等しい必要があります。後者の場合、埋め込み操作は配列の末尾まで実行されます (0 <=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 XML では、歴史的な理由から、null のビット配列と空のビット配列を区別しています。ほとんどのアプリケーションにとって重要なのは、ビット配列にデータが含まれているかどうかであり、これはisEmpty() を使用して判断できます。

isEmpty()も参照してください 。

void QBitArray::resize(qsizetype size)

ビット配列をsize ビットにリサイズします。

size が現在のサイズより大きい場合、ビット配列はsize ビットに拡張され、余分なビットは末尾に追加されます。新しいビットはfalse (0)に初期化されます。

size が現在のサイズより小さい場合、末尾からビットが削除されます。

size()も参照してください 。

void QBitArray::setBit(qsizetype i)

インデックス位置i のビットを 1 に設定します。

i i は、ビット配列内の有効なインデックス位置でなければなりません(つまり、0 <= < ())。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 ` がヌルポインタではなく、かつ配列が 32 ビットを超える場合、`ok ` は false に設定され、この関数は 0 を返します。それ以外の場合は、true に設定されます。

この関数は Qt 6.0 で導入されました。

bool QBitArray::toggleBit(qsizetype i)

インデックス位置i にあるビットの値を反転させ、そのビットの以前の値を、セットされていた場合はtrue、セットされていなかった場合はfalseとして返します。

以前の値が 0 だった場合、新しい値は 1 になります。以前の値が 1 だった場合、新しい値は 0 になります。

i i は、ビット配列内の有効なインデックス位置でなければなりません(つまり、0 <= < ()) です。size

setBit() およびclearBit()も参照してください 。

void QBitArray::truncate(qsizetype pos)

インデックス位置pos でビット配列を切り捨てます。

pos が配列の末尾を超えている場合、何も起こりません。

resize()も参照してください 。

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~()。

[noexcept] QBitArray &QBitArray::operator=(QBitArray &&other)

other をこのビット配列に移動し、このビット配列への参照を返します。

[noexcept] QBitArray &QBitArray::operator=(const QBitArray &other)

このビット配列にother を割り当て、このビット配列への参照を返します。

QBitRef QBitArray::operator[](qsizetype i)

インデックス位置i にあるビットを、変更可能な参照として返します。

i i は、ビット配列内の有効なインデックス位置でなければなりません(すなわち、0 <= < ())。size

例:

QBitArray a(3);
a[0] = false;
a[1] = true;
a[2] = a[0] ^ a[1];

戻り値の型は QBitRef であり、これはQBitArray のヘルパークラスです。QBitRef 型のオブジェクトを取得すると、そのオブジェクトに代入を行うことができ、その代入は参照を取得したQBitArray 内のビットに反映されます。

関数 `testBit()`、`setBit()`、および `clearBit()` は、わずかに高速です。

at()、testBit()、setBit()、およびclearBit()も参照してください 。

bool QBitArray::operator[](qsizetype i) const

これはオーバーロードされた関数です。

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~()。

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~()。

関連する非メンバー関数

[noexcept] bool operator!=(const QBitArray &lhs, const QBitArray &rhs)

lhs がrhs ビット配列と等しくない場合、true を返します。それ以外の場合は、false を返します。

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` の論理積(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^()も参照してください 。

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 &&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^=()も参照してください 。

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 a)

ビット配列 `a` のビットを反転させたビット配列を返します。

例:

QBitArray a(3);
QBitArray b;
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b = ~a;                         // b: [ 0, 1, 0 ]

関連項目: operator&()、operator|()、およびoperator^()。

© 2026 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.