Auf dieser Seite

QBitArray Class

Die Klasse „QBitArray“ stellt ein Bit-Array bereit. Mehr dazu...

Header: #include <QBitArray>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

QBitArray-Vergleiche

KategorieVergleichbare Typen
GleichheitQBitArray

Öffentliche Funktionen

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)

Statische öffentliche Mitglieder

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)

Ausführliche Beschreibung

Ein QBitArray ist ein Array, das Zugriff auf einzelne Bits gewährt und Operatoren (AND, OR, XOR und NOT) bereitstellt, die auf ganze Bit-Arrays angewendet werden können. Es nutzt implizites Sharing (Copy-on-Write), um den Speicherverbrauch zu reduzieren und unnötiges Kopieren von Daten zu vermeiden.

Der folgende Code erstellt ein `QBitArray` mit 200 Bits, die auf „false“ (0) initialisiert sind:

QBitArray ba(200);

Um die Bits auf „true“ zu initialisieren, übergeben Sie entweder „ true “ als zweites Argument an den Konstruktor oder rufen Sie später „ fill()“ auf.

QBitArray verwendet 0-basierte Indizes, genau wie C++-Arrays. Um auf das Bit an einer bestimmten Indexposition zuzugreifen, können Sie den Operator []() verwenden. Bei nicht-konstanten Bit-Arrays gibt der Operator []() eine Referenz auf ein Bit zurück, die auf der linken Seite einer Zuweisung verwendet werden kann. Zum Beispiel:

QBitArray ba;
ba.resize(3);
ba[0] = true;
ba[1] = false;
ba[2] = true;

Aus technischen Gründen ist es effizienter, testBit() und setBit() für den Zugriff auf Bits im Array zu verwenden als den Operator [](). Zum Beispiel:

QBitArray ba(3);
ba.setBit(0, true);
ba.setBit(1, false);
ba.setBit(2, true);

QBitArray unterstützt & (AND), | (OR), ^ (XOR), ~ (NOT) sowie &=, |= und ^=. Diese Operatoren funktionieren genauso wie die gleichnamigen integrierten bitweisen C++-Operatoren. Beispiel:

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 ]

Aus historischen Gründen unterscheidet QBitArray zwischen einem Null-Bit-Array und einem leeren Bit-Array. Ein Null-Bit-Array ist ein Bit-Array, das mit dem Standardkonstruktor von QBitArray initialisiert wurde. Ein leeres Bit-Array ist ein beliebiges Bit-Array der Größe 0. Ein Null-Bit-Array ist immer leer, aber ein leeres Bit-Array ist nicht unbedingt 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

Alle Funktionen mit Ausnahme von ` isNull()` behandeln Null-Bit-Arrays genauso wie leere Bit-Arrays; beispielsweise ist `QBitArray()` gleichbedeutend mit `QBitArray(0)`. Wir empfehlen, stets ` isEmpty()` zu verwenden und ` isNull()` zu vermeiden.

Siehe auch „ QByteArray “ und „ QList “.

Dokumentation zu Mitgliedsfunktionen

[noexcept] QBitArray::QBitArray()

Erstellt ein leeres Bit-Array.

Siehe auch ` isEmpty()`.

[explicit] QBitArray::QBitArray(qsizetype size, bool value = false)

Erstellt ein Bit-Array, das „ size “ Bits enthält. Die Bits werden mit „ value “ initialisiert, dessen Standardwert „false“ (0) ist.

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

Erstellt eine Kopie von ` other`.

Dieser Vorgang dauert eine konstante Zeit, da `QBitArray` implizit gemeinsam genutzt wird. Dadurch ist die Rückgabe eines `QBitArray` aus einer Funktion sehr schnell. Wird eine gemeinsam genutzte Instanz geändert, wird sie kopiert (Copy-on-Write), was lineare Zeit in Anspruch nimmt.

Siehe auch ` operator=()`.

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

Erstellt eine QBitArray-Instanz per Move-Konstruktion, sodass diese auf dasselbe Objekt verweist, auf das zuvor other verwiesen hat.

bool QBitArray::at(qsizetype i) const

Gibt den Wert des Bits an der Indexposition i zurück.

i muss eine gültige Indexposition im Bit-Array sein (d. h. 0 <= i < size()).

Siehe auch ` operator[]()`.

const char *QBitArray::bits() const

Gibt einen Zeiger auf ein dichtes Bit-Array für dieses QBitArray zurück. Die Bits werden in jedem Byte vom niedrigstwertigen Bit aus nach oben gezählt. Die Anzahl der relevanten Bits im letzten Byte ergibt sich aus size() % 8.

Siehe auch fromBits() und size().

void QBitArray::clear()

Löscht den Inhalt des Bit-Arrays und macht es leer.

Siehe auch resize() und isEmpty().

void QBitArray::clearBit(qsizetype i)

Setzt das Bit an der Indexposition i auf 0.

i muss eine gültige Indexposition im Bit-Array sein (d. h., 0 <= i < size()).

Siehe auch setBit() und toggleBit().

qsizetype QBitArray::count() const

Entspricht „ size()“.

qsizetype QBitArray::count(bool on) const

Wenn „ on “ wahr ist, gibt diese Funktion die Anzahl der im Bit-Array gespeicherten 1-Bits zurück; andernfalls wird die Anzahl der 0-Bits zurückgegeben.

bool QBitArray::fill(bool value, qsizetype size = -1)

Setzt jedes Bit im Bit-Array auf „ value “ und gibt bei Erfolg „true“ zurück; andernfalls wird „ false “ zurückgegeben. Wenn „ size “ ungleich -1 (Standardwert) ist, wird das Bit-Array zuvor auf „ size “ angepasst.

Beispiel:

QBitArray ba(8);
ba.fill(true);
// ba: [ 1, 1, 1, 1, 1, 1, 1, 1 ]

ba.fill(false, 2);
// ba: [ 0, 0 ]

Siehe auch resize().

void QBitArray::fill(bool value, qsizetype begin, qsizetype end)

Setzt die Bits an den Indexpositionen begin bis einschließlich (jedoch nicht einschließlich) end auf value.

begin muss eine gültige Indexposition im Bit-Array sein (0 <= begin < size()).

end muss entweder eine gültige Indexposition sein oder gleich size() sein; in diesem Fall läuft die Fülloperation bis zum Ende des Arrays (0 <= end <= size()).

Beispiel:

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 ]

Dies ist eine überladene Funktion.

[static] QBitArray QBitArray::fromBits(const char *data, qsizetype size)

Erzeugt ein ` QBitArray ` mit dem dichten Bit-Array unter der Adresse ` data`, das ` size ` Bits enthält. Das Byte-Array unter der Adresse ` data ` muss mindestens ` size / 8` (aufgerundet) Bytes lang sein.

Wenn „ size “ kein Vielfaches von 8 ist, berücksichtigt diese Funktion die untersten „ size % 8“ Bits des letzten Bytes in „ data “.

Siehe auch bits().

bool QBitArray::isEmpty() const

Gibt „ true “ zurück, wenn dieses Bit-Array die Größe 0 hat; andernfalls wird „false“ zurückgegeben.

Siehe auch ` size()`.

bool QBitArray::isNull() const

Gibt „ true “ zurück, wenn dieses Bit-Array null ist; andernfalls wird „ false “ zurückgegeben.

Beispiel:

QBitArray().isNull();           // returns true
QBitArray(0).isNull();          // returns false
QBitArray(3).isNull();          // returns false

Qt unterscheidet aus historischen Gründen zwischen null-Bit-Arrays und leeren Bit-Arrays. Für die meisten Anwendungen ist es entscheidend, ob ein Bit-Array Daten enthält oder nicht, und dies lässt sich mit ` isEmpty()` feststellen.

Siehe auch ` isEmpty()`.

void QBitArray::resize(qsizetype size)

Passen Sie die Größe des Bit-Arrays auf size Bits an.

Ist ` size ` größer als die aktuelle Größe, wird das Bit-Array auf ` size ` Bits erweitert, wobei die zusätzlichen Bits am Ende angehängt werden. Die neuen Bits werden auf „false“ (0) initialisiert.

Ist ` size ` kleiner als die aktuelle Größe, werden Bits am Ende entfernt.

Siehe auch size().

void QBitArray::setBit(qsizetype i)

Setzt das Bit an der Indexposition i auf 1.

i muss eine gültige Indexposition im Bit-Array sein (d. h. 0 <= i < size()).

Siehe auch clearBit() und toggleBit().

void QBitArray::setBit(qsizetype i, bool value)

Setzt das Bit an der Indexposition „ i “ auf „ value “.

Dies ist eine überladene Funktion.

qsizetype QBitArray::size() const

Gibt die Anzahl der im Bit-Array gespeicherten Bits zurück.

Siehe auch ` resize()`.

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

Tauscht dieses Bit-Array mit „ other “ aus. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

bool QBitArray::testBit(qsizetype i) const

Gibt „ true “ zurück, wenn das Bit an der Indexposition „ i “ den Wert 1 hat; andernfalls wird „ false “ zurückgegeben.

i muss eine gültige Indexposition im Bit-Array sein (d. h., 0 <= i < size()).

Siehe auch setBit() und clearBit().

[noexcept, since 6.0] quint32 QBitArray::toUInt32(QSysInfo::Endian endianness, bool *ok = nullptr) const

Gibt das Array der in einen int konvertierten Bits zurück. Die Konvertierung basiert auf endianness. Konvertiert bis zu den ersten 32 Bits des Arrays in quint32 und gibt diese unter Beachtung von endianness zurück. Wenn ok kein Nullzeiger ist und das Array mehr als 32 Bits hat, wird ok auf false gesetzt und diese Funktion gibt Null zurück; andernfalls wird es auf true gesetzt.

Diese Funktion wurde in Qt 6.0 eingeführt.

bool QBitArray::toggleBit(qsizetype i)

Kehrt den Wert des Bits an der Indexposition i um und gibt den vorherigen Wert dieses Bits entweder als „true“ (falls es gesetzt war) oder als „false“ (falls es nicht gesetzt war) zurück.

War der vorherige Wert 0, ist der neue Wert 1. War der vorherige Wert 1, ist der neue Wert 0.

i muss eine gültige Indexposition im Bit-Array sein (d. h. 0 <= i < size()).

Siehe auch setBit() und clearBit().

void QBitArray::truncate(qsizetype pos)

Kürzt das Bit-Array an der Indexposition pos ab.

Liegt pos außerhalb des Array-Endes, geschieht nichts.

Siehe auch resize().

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

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

Führt die UND-Operation zwischen allen Bits in diesem Bit-Array und other durch. Weist das Ergebnis diesem Bit-Array zu und gibt eine Referenz darauf zurück.

Das Ergebnis hat die Länge des längeren der beiden Bit-Arrays, wobei fehlende Bits (falls ein Array kürzer als das andere ist) mit 0 gesetzt werden.

Beispiel:

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 ]

Siehe auch operator&(), operator|=(), operator^=() und operator~().

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

Verschiebt „ other “ in dieses Bit-Array und gibt eine Referenz auf dieses Bit-Array zurück.

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

Weist diesem Bit-Array den Wert „ other “ zu und gibt eine Referenz auf dieses Bit-Array zurück.

QBitRef QBitArray::operator[](qsizetype i)

Gibt das Bit an der Indexposition i als bearbeitbare Referenz zurück.

i muss eine gültige Indexposition im Bit-Array sein (d. h. 0 <= i < size()).

Beispiel:

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

Der Rückgabewert ist vom Typ `QBitRef`, einer Hilfsklasse für ` QBitArray`. Wenn Sie ein Objekt vom Typ `QBitRef` erhalten, können Sie ihm einen Wert zuweisen, und die Zuweisung wirkt sich auf das Bit im ` QBitArray ` aus, von dem Sie die Referenz erhalten haben.

Die Funktionen „ testBit()“, „ setBit()“ und „ clearBit()“ sind etwas schneller.

Siehe auch at(), testBit(), setBit() und clearBit().

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

Dies ist eine überladene Funktion.

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

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

Führt die XOR-Operation zwischen allen Bits in diesem Bit-Array und other durch. Weist das Ergebnis diesem Bit-Array zu und gibt eine Referenz darauf zurück.

Das Ergebnis hat die Länge des längeren der beiden Bit-Arrays, wobei fehlende Bits (falls ein Array kürzer als das andere ist) mit 0 gesetzt werden.

Beispiel:

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 ]

Siehe auch operator^(), operator&=(), operator|=() und operator~().

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

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

Führt die OR-Operation zwischen allen Bits in diesem Bit-Array und other durch. Weist das Ergebnis diesem Bit-Array zu und gibt eine Referenz darauf zurück.

Das Ergebnis hat die Länge des längeren der beiden Bit-Arrays, wobei fehlende Bits (falls ein Array kürzer als das andere ist) mit 0 gesetzt werden.

Beispiel:

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 ]

Siehe auch „ operator|()“, „ operator&=()“, „ operator^=()“ und „ operator~()“.

Verwandte Nicht-Mitglieder

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

Gibt „ true “ zurück, wenn „ lhs “ nicht gleich dem Bit-Array „ rhs “ ist; andernfalls wird „ false “ zurückgegeben.

Siehe auch 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)

Gibt ein Bit-Array zurück, das dem UND-Produkt der Bit-Arrays „ a1 “ und „ a2 “ entspricht.

Das Ergebnis hat die Länge des längeren der beiden Bit-Arrays, wobei fehlende Bits (falls ein Array kürzer als das andere ist) mit 0 gesetzt werden.

Beispiel:

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 ]

Siehe auch operator&=(), operator|() und operator^().

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

Schreibt das Bit-Array „ ba “ in den Stream „ out “.

Siehe auch „Format der QDataStream-Operatoren“.

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

Gibt „ true “ zurück, wenn „ lhs “ dem Bit-Array „ rhs “ entspricht; andernfalls wird „ false “ zurückgegeben.

Siehe auch operator!=().

QDataStream &operator>>(QDataStream &in, QBitArray &ba)

Liest ein Bit-Array aus dem Stream „ in “ in „ ba “ ein.

Siehe auch „Format der QDataStream-Operatoren“.

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)

Gibt ein Bit-Array zurück, das dem XOR-Produkt der Bit-Arrays a1 und a2 entspricht.

Das Ergebnis hat die Länge des längeren der beiden Bit-Arrays, wobei fehlende Bits (falls ein Array kürzer ist als das andere) mit 0 gesetzt werden.

Beispiel:

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 ]

Siehe auch 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)

Gibt ein Bit-Array zurück, das dem OR-Produkt der Bit-Arrays a1 und a2 entspricht.

Das Ergebnis hat die Länge des längeren der beiden Bit-Arrays, wobei fehlende Bits (falls ein Array kürzer als das andere ist) mit 0 gesetzt werden.

Beispiel:

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 ]

Siehe auch QBitArray::operator|=(), operator&() und operator^().

QBitArray operator~(QBitArray a)

Gibt ein Bit-Array zurück, das die invertierten Bits des Bit-Arrays a enthält.

Beispiel:

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

Siehe auch operator&(), operator|() und 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.