QBitArray Class
Die Klasse QBitArray liefert ein Array von Bits. Mehr...
Kopfzeile: | #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 ist Teil von Implicitly Shared Classes.
Diese Klasse ist gleichwertig-vergleichbar.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Ö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) |
Detaillierte Beschreibung
Ein QBitArray ist ein Array, das den Zugriff auf einzelne Bits ermöglicht und Operatoren (AND, OR, XOR und NOT) bereitstellt, die auf ganze Arrays von Bits wirken. Es verwendet implizites Sharing (copy-on-write), um den Speicherverbrauch zu reduzieren und das unnötige Kopieren von Daten zu vermeiden.
Der folgende Code konstruiert 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 operator[]() verwenden. Bei nicht-konstanten Bit-Arrays gibt operator[]() eine Referenz auf ein Bit zurück, das auf der linken Seite einer Zuweisung verwendet werden kann. Ein 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 operator[](). Ein 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 auf die gleiche Weise wie die eingebauten C++ bitweisen Operatoren gleichen Namens. Ein 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 Standard-Konstruktor von QBitArray initialisiert wird. Ein leeres Bitarray ist ein beliebiges Bitarray mit 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 außer isNull() behandeln Null-Bit-Arrays genauso wie leere Bit-Arrays; zum Beispiel vergleicht QBitArray() gleich mit QBitArray(0). Wir empfehlen, dass Sie immer isEmpty() verwenden und isNull() vermeiden.
Siehe auch QByteArray und QList.
Dokumentation der Mitgliedsfunktionen
QBitArray &QBitArray::operator&=(QBitArray &&other)
QBitArray &QBitArray::operator&=(const QBitArray &other)
Führt die UND-Verknüpfung zwischen allen Bits in diesem Bit-Array und other durch. Weist das Ergebnis diesem Bit-Array zu und gibt einen Verweis darauf zurück.
Das Ergebnis hat die Länge des längsten der beiden Bit-Arrays, wobei alle fehlenden Bits (wenn ein Array kürzer ist als das andere) als 0 angenommen 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~().
QBitArray &QBitArray::operator|=(QBitArray &&other)
QBitArray &QBitArray::operator|=(const QBitArray &other)
Führt die ODER-Verknüpfung 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ängsten der beiden Bit-Arrays, wobei alle fehlenden Bits (wenn ein Array kürzer ist als das andere) als 0 angenommen 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~().
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 einen Verweis darauf zurück.
Das Ergebnis hat die Länge des längsten der beiden Bit-Arrays, wobei alle fehlenden Bits (wenn ein Array kürzer ist als das andere) als 0 angenommen 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~().
[noexcept]
QBitArray::QBitArray()
Konstruiert ein leeres Bit-Array.
Siehe auch isEmpty().
[explicit]
QBitArray::QBitArray(qsizetype size, bool value = false)
Konstruiert ein Bit-Array mit size Bits. Die Bits werden mit value initialisiert, das standardmäßig auf false (0) gesetzt ist.
[noexcept]
QBitArray::QBitArray(const QBitArray &other)
Konstruiert eine Kopie von other.
Dieser Vorgang benötigt konstante Zeit, da QBitArray implizit gemeinsam genutzt wird. Dies macht die Rückgabe eines QBitArray aus einer Funktion sehr schnell. Wenn eine gemeinsam genutzte Instanz geändert wird, wird sie kopiert (copy-on-write), was lineare Zeit benötigt.
Siehe auch operator=().
[noexcept]
QBitArray::QBitArray(QBitArray &&other)
Move-konstruiert eine QBitArray-Instanz, die auf das gleiche Objekt zeigt, auf das other gezeigt 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 ab dem niedrigstwertigen Bit in jedem Byte aufwärts gezählt. Die Anzahl der relevanten Bits im letzten Byte wird durch size() % 8
angegeben.
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
Dasselbe wie 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 false
. Wenn size ungleich -1 ist (die Vorgabe), wird das Bit-Array vorher auf size umgestellt.
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)
Dies ist eine überladene Funktion.
Setzt Bits an den Indexpositionen begin bis zu (aber 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 oder gleich size() sein; in diesem Fall läuft der Füllvorgang 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 ]
[static]
QBitArray QBitArray::fromBits(const char *data, qsizetype size)
Erzeugt ein QBitArray mit dem dichten Bit-Array an data, mit size Bits. Das Byte-Array unter data muss mindestens size / 8 (aufgerundet) Bytes lang sein.
Wenn size kein Vielfaches von 8 ist, schließt diese Funktion die niedrigsten size % 8 Bits vom letzten Byte in data ein.
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 wichtig, ob ein Bit-Array Daten enthält oder nicht, und dies kann mit isEmpty() ermittelt werden.
Siehe auch isEmpty().
void QBitArray::resize(qsizetype size)
Ändert die Größe des Bit-Arrays auf size Bits.
Wenn size größer als die aktuelle Größe ist, wird das Bit-Array auf size Bits erweitert, wobei die zusätzlichen Bits am Ende hinzugefügt werden. Die neuen Bits werden auf false (0) initialisiert.
Wenn size kleiner als die aktuelle Größe ist, werden die 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)
Dies ist eine überladene Funktion.
Setzt das Bit an der Indexposition i auf value.
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 nie fehl.
bool QBitArray::testBit(qsizetype i) const
Gibt true
zurück, wenn das Bit an der Indexposition i 1 ist; 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 in einen int umgewandelte Bit-Array zurück. Die Konvertierung basiert auf endianness. Konvertiert bis zu den ersten 32 Bits des Arrays nach quint32
und gibt es zurück, wobei endianness befolgt wird. Wenn ok kein Null-Zeiger ist und das Array mehr als 32 Bits hat, wird ok auf false gesetzt und diese Funktion gibt null zurück; ansonsten wird sie auf true gesetzt.
Diese Funktion wurde in Qt 6.0 eingeführt.
bool QBitArray::toggleBit(qsizetype i)
Invertiert den Wert des Bits an der Indexposition i und gibt den vorherigen Wert dieses Bits als entweder wahr (wenn es gesetzt war) oder falsch (wenn es nicht gesetzt war) zurück.
Wenn der vorherige Wert 0 war, wird der neue Wert 1 sein. Wenn der vorherige Wert 1 war, 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)
Schneidet das Bit-Array an der Indexposition pos ab.
Wenn pos hinter dem Ende des Arrays liegt, geschieht nichts.
Siehe auch resize().
[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 other diesem Bit-Array zu und gibt einen Verweis auf dieses Bit-Array zurück.
QBitRef QBitArray::operator[](qsizetype i)
Gibt das Bit an der Indexposition i als modifizierbare 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 es zuweisen, und die Zuweisung gilt für das Bit in QBitArray, 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.
Verwandte Nicht-Mitglieder
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 das UND der Bit-Arrays a1 und a2 ist.
Das Ergebnis hat die Länge der längsten der beiden Bitmatrizen, wobei alle fehlenden Bits (wenn eine Matrix kürzer ist als die andere) als 0 angenommen 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^().
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 das ODER der Bit-Arrays a1 und a2 ist.
Das Ergebnis hat die Länge der längsten der beiden Bitmatrizen, wobei alle fehlenden Bits (wenn eine Matrix kürzer ist als die andere) als 0 angenommen 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 &&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 das XOR der Bit-Arrays a1 und a2 ist.
Das Ergebnis hat die Länge der längsten der beiden Bitmatrizen, wobei alle fehlenden Bits (wenn eine Matrix kürzer ist als die andere) als 0 angenommen 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^=(), operator&(), und operator|().
[noexcept]
bool operator!=(const QBitArray &lhs, const QBitArray &rhs)
Gibt true
zurück, wenn lhs nicht gleich rhs ist; andernfalls wird false
zurückgegeben.
Siehe auch 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 gleich rhs ist; andernfalls gibt es false
zurück.
Siehe auch operator!=().
QDataStream &operator>>(QDataStream &in, QBitArray &ba)
Liest ein Bit-Array in ba aus stream in.
Siehe auch Format der QDataStream-Operatoren.
QBitArray operator~(QBitArray a)
Gibt ein Bit-Array zurück, das die invertierten Bits des Bit-Arrays a enthält.
Beispiel:
© 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.