QBitArray Class
La classe QBitArray fournit un tableau de bits. Plus d'informations...
| En-tête : | #include <QBitArray> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
- Liste de tous les membres, y compris les membres hérités
- QBitArray fait partie des classes implicitement partagées.
Cette classe est comparable à l'égalité.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| 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) |
Membres publics statiques
| QBitArray | fromBits(const char *data, qsizetype size) |
Non-membres apparentés
| 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) |
Description détaillée
Un QBitArray est un tableau qui donne accès à des bits individuels et fournit des opérateurs (AND, OR, XOR, et NOT) qui travaillent sur des tableaux entiers de bits. Il utilise le partage implicite (copy-on-write) pour réduire l'utilisation de la mémoire et éviter la copie inutile de données.
Le code suivant construit un QBitArray contenant 200 bits initialisés à false (0) :
QBitArray ba(200);
Pour initialiser les bits à true, il faut soit passer true comme deuxième argument au constructeur, soit appeler fill() plus tard.
QBitArray utilise des index basés sur 0, tout comme les tableaux C++. Pour accéder au bit à une position d'index particulière, vous pouvez utiliser operator[](). Sur les tableaux de bits non-const, operator[]() renvoie une référence à un bit qui peut être utilisé du côté gauche d'une affectation. Par exemple, l'opérateur[]()
QBitArray ba; ba.resize(3); ba[0] = true; ba[1] = false; ba[2] = true;
Pour des raisons techniques, il est plus efficace d'utiliser testBit() et setBit() pour accéder aux bits du tableau que operator[](). Par exemple : QBitArray supporte () et () pour accéder aux bits du tableau :
QBitArray ba(3); ba.setBit(0, true); ba.setBit(1, false); ba.setBit(2, true);
QBitArray prend en charge & (AND), | (OR), ^ (XOR), ~ (NOT), ainsi que &=, |=, et ^=. Ces opérateurs fonctionnent de la même manière que les opérateurs bitwise intégrés du même nom en C++. Par exemple :
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 ]
Pour des raisons historiques, QBitArray fait la distinction entre un tableau de bits nul et un tableau de bits vide. Un tableau de bits nul est un tableau de bits initialisé à l'aide du constructeur par défaut de QBitArray. Un tableau de bits vide est un tableau de bits de taille 0. Un tableau de bits nul est toujours vide, mais un tableau de bits vide n'est pas nécessairement nul :
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
Toutes les fonctions, à l'exception de isNull(), traitent les tableaux de bits nuls de la même manière que les tableaux de bits vides ; par exemple, QBitArray() compare à QBitArray(0). Nous vous recommandons de toujours utiliser isEmpty() et d'éviter isNull().
Voir également QByteArray et QList.
Documentation des fonctions membres
[noexcept] QBitArray::QBitArray()
Construit un tableau de bits vide.
Voir également isEmpty().
[explicit] QBitArray::QBitArray(qsizetype size, bool value = false)
Construit un tableau de bits contenant size bits. Les bits sont initialisés avec value, qui vaut par défaut false (0).
[noexcept] QBitArray::QBitArray(const QBitArray &other)
Construit une copie de other.
Cette opération prend un temps constant, car le QBitArray est implicitement partagé. Cela rend le retour d'un QBitArray à partir d'une fonction très rapide. Si une instance partagée est modifiée, elle sera copiée (copy-on-write), ce qui prend un temps linéaire.
Voir aussi operator=().
[noexcept] QBitArray::QBitArray(QBitArray &&other)
Move-construit une instance de QBitArray, en la faisant pointer sur le même objet que other.
bool QBitArray::at(qsizetype i) const
Renvoie la valeur du bit à la position d'index i.
i doit être une position d'index valide dans le tableau de bits (c'est-à-dire 0 <= i < size()).
Voir également operator[]().
const char *QBitArray::bits() const
Renvoie un pointeur vers un tableau de bits dense pour ce site QBitArray. Les bits sont comptés à partir du bit le moins significatif de chaque octet. Le nombre de bits pertinents dans le dernier octet est donné par size() % 8.
Voir également fromBits() et size().
void QBitArray::clear()
Efface le contenu du tableau de bits et le rend vide.
Voir également resize() et isEmpty().
void QBitArray::clearBit(qsizetype i)
Met à 0 le bit situé à la position d'index i.
i doit être une position d'index valide dans le tableau de bits (c'est-à-dire 0 <= i < size()).
Voir également setBit() et toggleBit().
qsizetype QBitArray::count() const
Identique à size().
qsizetype QBitArray::count(bool on) const
Si on est vrai, cette fonction renvoie le nombre de bits 1 stockés dans le tableau de bits ; sinon, le nombre de bits 0 est renvoyé.
bool QBitArray::fill(bool value, qsizetype size = -1)
Définit chaque bit du tableau de bits à value, en renvoyant true en cas de succès ; sinon, il renvoie false. Si size est différent de -1 (valeur par défaut), le tableau de bits est préalablement redimensionné à size.
Exemple :
QBitArray ba(8); ba.fill(true); // ba: [ 1, 1, 1, 1, 1, 1, 1, 1 ] ba.fill(false, 2); // ba: [ 0, 0 ]
Voir aussi resize().
void QBitArray::fill(bool value, qsizetype begin, qsizetype end)
Définit les bits aux positions d'index begin jusqu'à (mais pas y compris) end à value.
begin doit être une position d'index valide dans le tableau de bits (0 <= begin < size()).
end doit être soit une position d'index valide, soit égale à size(), auquel cas l'opération de remplissage se poursuit jusqu'à la fin du tableau (0 <= end <= size()).
Exemple :
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 ]
Il s'agit d'une fonction surchargée.
[static] QBitArray QBitArray::fromBits(const char *data, qsizetype size)
Crée un QBitArray avec le tableau de bits dense situé à data, avec size bits. Le tableau d'octets situé à data doit avoir une longueur d'au moins size / 8 (arrondie au supérieur) octets.
Si size n'est pas un multiple de 8, cette fonction inclura les size % 8 bits les plus bas du dernier octet dans data.
Voir aussi bits().
bool QBitArray::isEmpty() const
Renvoie true si ce tableau de bits a une taille de 0 ; sinon, renvoie false.
Voir aussi size().
bool QBitArray::isNull() const
Renvoie true si ce tableau de bits est nul ; sinon, renvoie false.
Exemple :
QBitArray().isNull(); // returns true QBitArray(0).isNull(); // returns false QBitArray(3).isNull(); // returns false
Pour des raisons historiques, Qt fait une distinction entre les tableaux de bits nuls et les tableaux de bits vides. Pour la plupart des applications, l'important est de savoir si un tableau de bits contient ou non des données, ce qui peut être déterminé à l'aide de isEmpty().
Voir également isEmpty().
void QBitArray::resize(qsizetype size)
Redimensionne le tableau de bits à size bits.
Si size est supérieur à la taille actuelle, le tableau de bits est étendu pour atteindre size bits, les bits supplémentaires étant ajoutés à la fin. Les nouveaux bits sont initialisés à false (0).
Si size est inférieur à la taille actuelle, les bits sont supprimés à la fin.
Voir aussi size().
void QBitArray::setBit(qsizetype i)
Met à 1 le bit situé à la position d'index i.
i doit être une position d'index valide dans le tableau de bits (c'est-à-dire 0 <= i < size()).
Voir également clearBit() et toggleBit().
void QBitArray::setBit(qsizetype i, bool value)
Définit le bit à la position d'index i à value.
Il s'agit d'une fonction surchargée.
qsizetype QBitArray::size() const
Renvoie le nombre de bits stockés dans le tableau de bits.
Voir également resize().
[noexcept] void QBitArray::swap(QBitArray &other)
Échange ce tableau de bits avec other. Cette opération est très rapide et n'échoue jamais.
bool QBitArray::testBit(qsizetype i) const
Renvoie true si le bit à la position d'index i est 1 ; sinon, renvoie false.
i doit être une position d'index valide dans le tableau de bits (c'est-à-dire 0 <= i < size()).
Voir également setBit() et clearBit().
[noexcept, since 6.0] quint32 QBitArray::toUInt32(QSysInfo::Endian endianness, bool *ok = nullptr) const
Renvoie le tableau de bits converti en int. La conversion est basée sur endianness. Convertit jusqu'aux 32 premiers bits du tableau en quint32 et le renvoie, en respectant endianness. Si ok n'est pas un pointeur nul et que le tableau a plus de 32 bits, ok est mis à false et cette fonction renvoie zéro ; sinon, elle est mise à true.
Cette fonction a été introduite dans Qt 6.0.
bool QBitArray::toggleBit(qsizetype i)
Inverse la valeur du bit à la position d'index i, en renvoyant la valeur précédente de ce bit comme étant soit vraie (si elle a été définie), soit fausse (si elle a été désactivée).
Si la valeur précédente était 0, la nouvelle valeur sera 1. Si la valeur précédente était 1, la nouvelle valeur sera 0.
i doit être une position d'index valide dans le tableau de bits (c'est-à-dire 0 <= i < size()).
Voir également setBit() et clearBit().
void QBitArray::truncate(qsizetype pos)
Tronque le tableau de bits à la position d'index pos.
Si pos est au-delà de la fin du tableau, rien ne se passe.
Voir aussi resize().
QBitArray &QBitArray::operator&=(const QBitArray &other)
QBitArray &QBitArray::operator&=(QBitArray &&other)
Effectue l'opération ET entre tous les bits de ce tableau de bits et other. Affecte le résultat à ce tableau de bits et renvoie une référence à celui-ci.
Le résultat a la longueur du plus long des deux tableaux de bits, les bits manquants (si un tableau est plus court que l'autre) étant considérés comme 0.
Exemple :
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 ]
Voir également operator&(), operator|=(), operator^=() et operator~().
[noexcept] QBitArray &QBitArray::operator=(QBitArray &&other)
Déplace other dans ce tableau de bits et renvoie une référence à ce tableau de bits.
[noexcept] QBitArray &QBitArray::operator=(const QBitArray &other)
Affecte other à ce tableau de bits et renvoie une référence à ce tableau de bits.
QBitRef QBitArray::operator[](qsizetype i)
Renvoie le bit à la position d'index i sous la forme d'une référence modifiable.
i doit être une position d'index valide dans le tableau de bits (c'est-à-dire 0 <= i < size()).
Exemple :
QBitArray a(3); a[0] = false; a[1] = true; a[2] = a[0] ^ a[1];
La valeur de retour est de type QBitRef, une classe d'aide pour QBitArray. Lorsque vous obtenez un objet de type QBitRef, vous pouvez l'assigner et l'assignation s'appliquera au bit du tableau QBitArray à partir duquel vous avez obtenu la référence.
Les fonctions testBit(), setBit() et clearBit() sont légèrement plus rapides.
Voir également at(), testBit(), setBit() et clearBit().
bool QBitArray::operator[](qsizetype i) const
Il s'agit d'une fonction surchargée.
QBitArray &QBitArray::operator^=(const QBitArray &other)
QBitArray &QBitArray::operator^=(QBitArray &&other)
Effectue l'opération XOR entre tous les bits de ce tableau de bits et other. Affecte le résultat à ce tableau de bits et renvoie une référence à celui-ci.
Le résultat a la longueur du plus long des deux tableaux de bits, les bits manquants (si un tableau est plus court que l'autre) étant considérés comme 0.
Exemple :
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 ]
Voir également operator^(), operator&=(), operator|=() et operator~().
QBitArray &QBitArray::operator|=(const QBitArray &other)
QBitArray &QBitArray::operator|=(QBitArray &&other)
Effectue l'opération OU entre tous les bits de ce tableau de bits et other. Affecte le résultat à ce tableau de bits et renvoie une référence à ce tableau.
Le résultat a la longueur du plus long des deux tableaux de bits, les bits manquants (si un tableau est plus court que l'autre) étant considérés comme 0.
Exemple :
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 ]
Voir également operator|(), operator&=(), operator^=() et operator~().
Non-membres apparentés
[noexcept] bool operator!=(const QBitArray &lhs, const QBitArray &rhs)
Renvoie true si lhs n'est pas égal à rhs bit array ; sinon, renvoie false.
Voir aussi operator==().
QBitArray operator&(const QBitArray &a1, const QBitArray &a2)
QBitArray operator&(QBitArray &&a1, const QBitArray &a2)
QBitArray operator&(const QBitArray &a1, QBitArray &&a2)
QBitArray operator&(QBitArray &&a1, QBitArray &&a2)
Renvoie un tableau de bits qui est l'ET des tableaux de bits a1 et a2.
Le résultat a la longueur du plus long des deux tableaux de bits, les bits manquants (si un tableau est plus court que l'autre) étant pris à 0.
Exemple :
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 ]
Voir également operator&=(), operator|() et operator^().
QDataStream &operator<<(QDataStream &out, const QBitArray &ba)
Écrit le tableau de bits ba dans le flux out.
Voir aussi Format des opérateurs QDataStream.
[noexcept] bool operator==(const QBitArray &lhs, const QBitArray &rhs)
Renvoie true si lhs est égal au tableau de bits rhs; sinon, renvoie false.
Voir aussi operator!=().
QDataStream &operator>>(QDataStream &in, QBitArray &ba)
Lit un tableau de bits dans ba à partir du flux in.
Voir aussi Format des opérateurs QDataStream.
QBitArray operator^(const QBitArray &a1, const QBitArray &a2)
QBitArray operator^(QBitArray &&a1, const QBitArray &a2)
QBitArray operator^(const QBitArray &a1, QBitArray &&a2)
QBitArray operator^(QBitArray &&a1, QBitArray &&a2)
Renvoie un tableau de bits qui est le XOR des tableaux de bits a1 et a2.
Le résultat a la longueur du plus long des deux tableaux de bits, les bits manquants (si un tableau est plus court que l'autre) étant pris à 0.
Exemple :
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 ]
Voir aussi operator^=().
QBitArray operator|(const QBitArray &a1, const QBitArray &a2)
QBitArray operator|(QBitArray &&a1, const QBitArray &a2)
QBitArray operator|(const QBitArray &a1, QBitArray &&a2)
QBitArray operator|(QBitArray &&a1, QBitArray &&a2)
Renvoie un tableau de bits qui est le OU des tableaux de bits a1 et a2.
Le résultat a la longueur du plus long des deux tableaux de bits, les bits manquants (si un tableau est plus court que l'autre) étant pris à 0.
Exemple :
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 ]
Voir également QBitArray::operator|=(), operator&() et operator^().
QBitArray operator~(QBitArray a)
Renvoie un tableau de bits contenant les bits inversés du tableau de bits a.
Exemple :
© 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.