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 des opérateurs logiques standards et convertis vers et depuis des chaînes de caractères et des entiers. Pour les besoins de la représentation sous forme de chaîne et de la désignation des directions pour les opérations de décalage, la séquence est considérée comme ayant ses éléments d'indice le plus faible à
droite
, comme dans la représentation binaire des entiers.
bitset
satisfait aux exigences de
CopyConstructible
et
CopyAssignable
.
|
Toutes les fonctions membres de
|
(depuis C++23) |
Table des matières |
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 |