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 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QBitArray gehört zu den implizit gemeinsam genutzten Klassen.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
QBitArray-Vergleiche
| Kategorie | Vergleichbare Typen |
|---|---|
| Gleichheit | QBitArray |
Ö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) |
Verwandte Nicht-Mitglieder
| 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 falseAlle 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 falseQt 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:
© 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.