std::bitset
| Défini dans l'en-tête <bitset>
|
||
template< std::size_t N >
class bitset;
|
||
Le modèle de classe bitset représente une séquence de taille fixe de N bits. Les bitsets peuvent être manipulés par les opérateurs logiques standards et convertis en et à partir de chaînes de caractères et d'entiers. Pour la représentation sous forme de chaîne et pour nommer les directions des opérations de décalage, la séquence est considérée comme ayant ses éléments les plus bas indexés à droite, comme dans la représentation binaire des entiers.
bitset répond aux exigences de CopyConstructible et de CopyAssignable.
|
Toutes les fonctions membres de |
(depuis C++23) |
Paramètres du modèle
| N | - | le nombre de bits à allouer pour le stockage |
Types membres
|
classe proxy représentant une référence à un bit
(classe) |
Fonctions membres
|
construit le bitset
(fonction membre publique) |
|
|
(supprimé en C++20)
|
compare le contenu
(fonction membre publique) |
Accès aux éléments |
|
|
accède à un bit spécifique
(fonction membre publique) |
|
|
accède à un bit spécifique
(fonction membre publique) |
|
|
vérifie si tous, certains ou aucun des bits sont définis à
true
(fonction membre publique) |
|
|
retourne le nombre de bits définis à
true
(fonction membre publique) |
|
Capacité |
|
|
retourne le nombre de bits que le bitset contient
(fonction membre publique) |
|
Modificateurs |
|
|
effectue les opérations binaires ET, OU, XOR et NON
(fonction membre publique) |
|
|
effectue les décalages binaires à gauche et à droite
(fonction membre publique) |
|
|
définit les bits à
true
ou à une valeur donnée
(fonction membre publique) |
|
|
définit les bits à
false
(fonction membre publique) |
|
|
bascule les valeurs des bits
(fonction membre publique) |
|
Conversions |
|
|
retourne une représentation sous forme de chaîne des données
(fonction membre publique) |
|
|
retourne une représentation
unsigned
long
des données
(fonction membre publique) |
|
|
(C++11)
|
retourne une représentation
unsigned
long
long
des données
(fonction membre publique) |
Fonctions non membres
|
effectue des opérations logiques binaires sur les bitsets
(modèle de fonction) |
|
|
effectue l'entrée et la sortie en flux des bitsets
(modèle de fonction) |
Classes d'assistance
|
(C++11)
|
Prise en charge du hachage pour
std::bitset
(spécialisation de modèle de classe) |
Notes
Si la taille d'un ensemble de bits n'est pas connue à la compilation, ou s'il est nécessaire de modifier sa taille à l'exécution, les types dynamiques tels que
std::vector<bool>
ou
boost::dynamic_bitset<>
peuvent être utilisés à la place.
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_constexpr_bitset
|
202207L
|
(C++23) |
Un
std::bitset
plus constexpr
|
__cpp_lib_bitset
|
202306L
|
(C++26) |
Interface entre
std::bitset
et
std::string_view
|
Exemple
#include <bitset> #include <cassert> #include <cstddef> #include <iostream> int main() { typedef std::size_t length_t, position_t; // les indices // constructeurs : constexpr std::bitset<4> b1; constexpr std::bitset<4> b2{0xA}; // == 0B1010 std::bitset<4> b3{"0011"}; // peut aussi être constexpr depuis C++23 std::bitset<8> b4{"ABBA", length_t(4), /*0:*/'A', /*1:*/'B'}; // == 0B0000'0110 // les bitsets peuvent être affichés sur un flux : std::cout << "b1:" << b1 << "; b2:" << b2 << "; b3:" << b3 << "; b4:" << b4 << '\n'; // le bitset supporte les opérations bit à bit : b3 |= 0b0100; assert(b3 == 0b0111); b3 &= 0b0011; assert(b3 == 0b0011); b3 ^= std::bitset<4>{0b1100}; assert(b3 == 0b1111); // opérations sur l'ensemble : b3.reset(); assert(b3 == 0); b3.set(); assert(b3 == 0b1111); assert(b3.all() && b3.any() && !b3.none()); b3.flip(); assert(b3 == 0); // opérations sur les bits individuels : b3.set(position_t(1), true); assert(b3 == 0b0010); b3.set(position_t(1), false); assert(b3 == 0); b3.flip(position_t(2)); assert(b3 == 0b0100); b3.reset(position_t(2)); assert(b3 == 0); // l'opérateur d'indice [] est supporté : b3[2] = true; assert(true == b3[2]); // autres opérations : assert(b3.count() == 1); assert(b3.size() == 4); assert(b3.to_ullong() == 0b0100ULL); assert(b3.to_string() == "0100"); }
Sortie :
b1:0000; b2:1010; b3:0011; b4:00000110
Voir aussi
|
bitset dynamique économe en espace
(spécialisation de modèle de classe) |
|
| Bit manipulation (C++20) | utilitaires pour accéder, manipuler et traiter des bits individuels et des séquences de bits |