QBitArray Class
La classe QBitArray fournit un tableau de bits. En savoir plus...
| 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 à partage implicite.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Comparaisons de QBitArray
| Catégorie | Types comparables |
|---|---|
| égalité | QBitArray |
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) |
Éléments non membres associé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 agissent sur des tableaux entiers de bits. Il utilise le partage implicite (copie à l'écriture) 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 suffit soit de passer ` true ` comme deuxième argument au constructeur, soit d’appeler ` fill()` ultérieurement.
QBitArray utilise des indices commençant à 0, tout comme les tableaux en C++. Pour accéder au bit situé à un indice donné, vous pouvez utiliser l’opérateur [](). Sur les tableaux de bits non constants, l’opérateur []() renvoie une référence à un bit qui peut être utilisée à gauche d’une affectation. Par exemple :
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 plutôt que l’opérateur [](). Par exemple :
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 bit à bit intégrés de C++ portant le même nom. 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 tout 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 falseToutes 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()` est équivalent à `QBitArray(0)`. Nous vous recommandons de toujours utiliser ` isEmpty()` et d'éviter ` isNull()`.
Voir également QByteArray et QList.
Documentation sur les fonctions membres
[noexcept] QBitArray::QBitArray()
Crée un tableau de bits vide.
Voir aussi isEmpty().
[explicit] QBitArray::QBitArray(qsizetype size, bool value = false)
Crée un tableau de bits contenant des bits de type « size ». Ces bits sont initialisés avec la valeur « value », dont la valeur par défaut est « false » (0).
[noexcept] QBitArray::QBitArray(const QBitArray &other)
Crée une copie de ` other`.
Cette opération s'effectue en temps constant, car QBitArray est implicitement partagé. Cela rend très rapide le retour d'un QBitArray depuis une fonction. Si une instance partagée est modifiée, elle sera copiée (copie à l'écriture), ce qui prend un temps linéaire.
Voir également operator=().
[noexcept] QBitArray::QBitArray(QBitArray &&other)
La fonction `move` crée une instance de `QBitArray` en la faisant pointer vers le même objet que celui vers lequel pointait ` other `.
bool QBitArray::at(qsizetype i) const
Renvoie la valeur du bit situé à l'index i.
i i doit être une position d'index valide dans le tableau de bits (c'est-à-dire que 0 <= < ()). size
Voir également operator[]().
const char *QBitArray::bits() const
Renvoie un pointeur vers un tableau de bits dense correspondant à cette QBitArray. Le comptage des bits s'effectue en partant du bit le moins significatif de chaque octet. Le nombre de bits pertinents dans le dernier octet est indiqué 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)
Définit le bit situé à l'index i sur 0.
i i doit être une position d'index valide dans le tableau de bits (c'est-à-dire 0 <= < ()). size
Voir également setBit() et toggleBit().
qsizetype QBitArray::count() const
Identique à ` size()`.
qsizetype QBitArray::count(bool on) const
Si la condition « on » est vraie, cette fonction renvoie le nombre de bits à 1 stockés dans le tableau de bits ; dans le cas contraire, elle renvoie le nombre de bits à 0.
bool QBitArray::fill(bool value, qsizetype size = -1)
Définit chaque bit du tableau de bits à la valeur value, et renvoie « true » en cas de réussite ; sinon, 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 situés aux positions d'index comprises entre begin et (sans inclure) end sur 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 s'exécute 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 tableau de bits dense ( QBitArray ) à partir du tableau de bits dense situé à l'adresse data, avec size bits. Le tableau d'octets situé à l'adresse data doit avoir une longueur d'au moins size / 8 (arrondi à l'unité supérieure) octets.
Si size n'est pas un multiple de 8, cette fonction inclura les bits les plus bas ( size % 8) du dernier octet de data.
Voir également 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 falseQt fait la distinction entre les tableaux de bits nuls et les tableaux de bits vides pour des raisons historiques. Pour la plupart des applications, ce qui importe, c'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 à faux (0).
Si size est inférieur à la taille actuelle, des bits sont supprimés à la fin.
Voir également size().
void QBitArray::setBit(qsizetype i)
Définit le bit situé à l'index i sur 1.
i i doit être une position d'index valide dans le tableau de bits (c'est-à-dire 0 <= < ()). size
Voir également clearBit() et toggleBit().
void QBitArray::setBit(qsizetype i, bool value)
Définit le bit situé à l'index i sur la valeur 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 aussi resize().
[noexcept] void QBitArray::swap(QBitArray &other)
Permute cet tableau de bits avec other. Cette opération est très rapide et ne rencontre jamais d'échec.
bool QBitArray::testBit(qsizetype i) const
Renvoie « true » si le bit situé à l'index i est égal à 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 entier. La conversion s'appuie sur endianness. Elle convertit les 32 premiers bits du tableau en quint32 et les renvoie, conformément à endianness. Si ok n'est pas un pointeur nul et que le tableau comporte plus de 32 bits, ok est défini sur false et cette fonction renvoie zéro ; dans le cas contraire, il est défini sur true.
Cette fonction a été introduite dans Qt 6.0.
bool QBitArray::toggleBit(qsizetype i)
Inverse la valeur du bit situé à l'index i, en renvoyant la valeur précédente de ce bit sous la forme « vrai » (s'il était activé) ou « faux » (s'il n'était pas activé).
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 à l'index pos.
Si pos se trouve au-delà de la fin du tableau, rien ne se passe.
Voir aussi resize().
QBitArray &QBitArray::operator&=(QBitArray &&other)
QBitArray &QBitArray::operator&=(const QBitArray &other)
Effectue l'opération « ET » entre tous les bits de ce tableau de bits et other. Attribue 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 égaux à 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 le contenu de ` other ` vers ce tableau de bits et renvoie une référence à ce tableau de bits.
[noexcept] QBitArray &QBitArray::operator=(const QBitArray &other)
Attribue la valeur « other » à ce tableau de bits et renvoie une référence à ce tableau de bits.
QBitRef QBitArray::operator[](qsizetype i)
Renvoie le bit situé à l'index i sous forme de référence modifiable.
i i doit être un indice valide dans le tableau de bits (c'est-à-dire 0 <= < ()). 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 lui attribuer une valeur, et cette attribution 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^=(QBitArray &&other)
QBitArray &QBitArray::operator^=(const QBitArray &other)
Effectue l'opération XOR entre tous les bits de ce tableau de bits et other. Attribue 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 l'un des tableaux est plus court que l'autre) étant considérés comme des 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|=(QBitArray &&other)
QBitArray &QBitArray::operator|=(const QBitArray &other)
Effectue l'opération OR entre tous les bits de ce tableau de bits et other. Attribue 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) sont considérés comme étant à 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~().
Éléments non membres associés
[noexcept] bool operator!=(const QBitArray &lhs, const QBitArray &rhs)
Renvoie ` true ` si ` lhs ` n'est pas égal à ` rhs ` (tableau de bits) ; sinon, renvoie ` false`.
Voir aussi 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)
Renvoie un tableau de bits correspondant au produit booléen (AND) 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 l'un des tableaux est plus court que l'autre) sont considérés comme étant égaux à 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 également Format des opérateurs QDataStream.
[noexcept] bool operator==(const QBitArray &lhs, const QBitArray &rhs)
Renvoie « true » si « lhs » est égal à « rhs » (tableau de bits) ; sinon, renvoie « false ».
Voir également operator!=().
QDataStream &operator>>(QDataStream &in, QBitArray &ba)
Lit un tableau de bits dans ` ba ` à partir du flux ` in`.
Voir également Format des opérateurs 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)
Renvoie un tableau de bits correspondant à l'opération 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 l'un des tableaux est plus court que l'autre) sont considérés comme étant égaux à 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 également 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)
Renvoie un tableau de bits correspondant au résultat de l'opération OU entre les tableaux de bits a1 et a2.
Le résultat a la longueur du plus long des deux tableaux de bits, les bits manquants (si l'un des tableaux est plus court que l'autre) étant considérés comme égaux à 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 aussi 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.