Classe bitset
Décrit un type d'objet stockant une séquence composée d'un nombre fixe de bits qui offrent un moyen compact de conserver des indicateurs d'un ensemble d'éléments ou de conditions. La bitset
classe prend en charge les opérations sur les objets de type bitset qui contiennent une collection de bits et fournissent un accès à temps constant à chaque bit.
Syntaxe
template <size_t N>
class bitset
Paramètres
N
Spécifie le nombre de bits dans l’objet avec un entier différent de zéro du type size_t
qui doit être connu au moment de la bitset
compilation.
Notes
Contrairement à la classe similairevector<bool>
, la bitset
classe n’a pas d’itérateurs et n’est pas un conteneur de bibliothèque standard C++. Il diffère également d’être vector<bool>
d’une taille spécifique qui est fixe au moment de la compilation conformément à la taille spécifiée par le paramètre N
de modèle lorsque l’objet bitset<N>
est déclaré.
Un bit est défini si sa valeur est 1, et est réinitialisé si sa valeur est 0. Basculer ou inverser un bit consiste à passer sa valeur de 1 à 0 ou de 0 à 1. Les N
bits d’un bitset
sont indexés par des valeurs entières comprises entre 0 et N
1, où 0 indexe la première position de bits et N
- 1 la position finale du bit.
Membres
Constructeurs
Nom | Description |
---|---|
bitset |
Construit un objet de la classe bitset<N> et initialise les bits à zéro, à une valeur spécifiée ou à des valeurs obtenues auprès des caractères d'une chaîne. |
Typedefs
Nom | Description |
---|---|
element_type |
Type qui est un synonyme du type de données bool et qui peut être utilisé pour référencer les bits des éléments d'un bitset . |
Functions
Nom | Description |
---|---|
all |
Teste tous les bits de ce bitset qui suit pour déterminer s’ils sont tous définis true sur . |
any |
La fonction membre teste si des bits de la séquence sont définis sur 1. |
count |
La fonction membre retourne le nombre de bits définis dans la séquence de bits. |
flip |
Inverse la valeur de tous les bits d’un bitset ou inverse un seul bit à une position spécifiée. |
none |
Teste si aucun bit n'a été défini sur 1 dans un objet bitset . |
reset |
Réinitialise tous les bits d'un bitset à 0 ou réinitialise à 0 un bit à une position spécifiée. |
set |
Définit tous les bits d'un bitset sur 1 ou définit sur 1 un bit à une position spécifiée. |
size |
Retourne le nombre de bits d'un objet bitset . |
test |
Teste si le bit à une position spécifiée d'un bitset est défini sur 1. |
to_string |
Convertit un objet bitset en une représentation sous forme de chaîne. |
to_ullong |
Retourne la somme des valeurs des bits d'un bitset sous forme de unsigned long long . |
to_ulong |
Convertit un objet bitset en un unsigned long qui générerait la séquence de bits contenue s'il était utilisé pour initialiser le bitset . |
Classes
Nom | Description |
---|---|
reference |
Classe proxy qui fournit des références aux bits contenus dans un bitset et qui est utilisée pour accéder aux bits individuels et pour s'en servir comme une classe d'assistance pour l'opérateur operator[] de la classe bitset . |
Opérateurs
Nom | Description |
---|---|
operator!= |
Teste l'inégalité d'un bitset cible avec un bitset spécifié. |
operator&= |
Effectue une combinaison de bitsets au niveau du bit avec l’opération « and » (& ) au niveau du bit. |
operator<< |
Décale les bits d'un bitset vers la gauche d'un nombre spécifié de positions et retourne le résultat dans un nouveau bitset . |
operator<<= |
Décale les bits d'un bitset vers la gauche d'un nombre spécifié de positions et retourne le résultat dans le bitset ciblé. |
operator== |
Teste l'égalité d'un bitset cible avec un bitset spécifié. |
operator>> |
Décale les bits d'un bitset vers la droite d'un nombre spécifié de positions et retourne le résultat dans un nouveau bitset . |
operator>>= |
Décale les bits d'un bitset vers la droite d'un nombre spécifié de positions et retourne le résultat dans le bitset ciblé. |
operator[] |
Retourne une référence à un bit à une position spécifiée d'un bitset si le bitset est modifiable ; sinon, retourne la valeur du bit à cette position. |
operator^= | Effectue une combinaison de bitsets au niveau du bit avec l’opération « xor » (^ ) au niveau du bit. |
operator|= |
Effectue une combinaison de bitsets au niveau du bit avec l’opération « ou » (| ) au niveau du bit. |
operator~ |
Inverse tous les bits d’un bitset cible et retourne le résultat. |
Structures
Nom | Description |
---|---|
hash |
all
Teste tous les bits de ce bitset pour déterminer s’ils sont tous définis sur true.
bool all() const;
Valeur de retour
Retourne true
si tous les bits de cet ensemble sont vrais. Retourne false
si un ou plusieurs bits sont faux.
any
Vérifie si des bits de la séquence sont définis sur 1.
bool any() const;
Valeur de retour
true
si un bit est bitset
défini sur 1 ; false
si tous les bits sont 0.
Exemple
// bitset_any.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 6 );
bool b, rb;
cout << "The original bitset b1( 6 ) is: ( "<< b1 << " )"
<< endl;
b = b1.any ( );
if ( b )
cout << "At least one of the bits in bitset is set to 1."
<< endl;
else
cout << "None of the bits in bitset are set to 1."
<< endl;
bitset<5> rb1;
rb1 = b1.reset ( );
cout << "The reset bitset is: ( "<< b1 << " )"
<< endl;
rb = rb1.any ( );
if ( rb )
cout << "At least one of the bits in the reset bitset "
<< "are set to 1." << endl;
else
cout << "None of the bits in bitset b1 are set to 1."
<< endl;
}
The original bitset b1( 6 ) is: ( 00110 )
At least one of the bits in bitset is set to 1.
The reset bitset is: ( 00000 )
None of the bits in bitset b1 are set to 1.
bitset
Construit un objet de la classe bitset<N>
et initialise les bits avec la valeur zéro, une valeur spécifiée ou des valeurs obtenues à partir des caractères d’une chaîne.
1) constexpr bitset();
2) bitset(unsigned long val);
3) constexpr bitset(unsigned long long val);
4) template <class CharType, class Traits, class Allocator>
explicit bitset(
const basic_string<CharType, Traits, Allocator>& str,
typename basic_string<CharType, Traits, Allocator>::size_type pos = 0);
5) template <class CharType, class Traits, class Allocator>
explicit bitset(
const basic_string<CharType, Traits, Allocator>& str,
typename basic_string<CharType, Traits, Allocator>::size_type pos,
typename basic_string<CharType, Traits, Allocator>::size_type count,
CharType Zero = CharType ('0'),
CharType One = CharType ('1'));
6) template<class CharType>
explicit bitset(
const CharType* str,
typename basic_string<CharType>::size_type
n = basic_string<CharType>::npos,
CharType zero = CharType('0'),
CharType one = CharType('1'));
Paramètres
val
Entier non signé dont la représentation de base deux est utilisée pour initialiser les bits dans la bitset
construction en cours.
str
Chaîne de zéros et celles utilisées pour initialiser les bitset
valeurs de bits.
pos
Position du caractère dans la chaîne, en comptant de gauche à droite et en commençant par zéro, utilisée pour initialiser le premier bit dans le bitset
.
count
Nombre de caractères dans la chaîne utilisée pour fournir des valeurs initiales pour les bits dans le bitset
.
Zero
Caractère utilisé pour représenter la valeur zéro. La valeur par défaut est « 0 ».
One
Caractère utilisé pour représenter la valeur un. La valeur par défaut est « 1 ».
Notes
1)
Construit un objet de classe bitset<N>
et initialise tous les bits N à une valeur par défaut de zéro.
2-3)
Construit un objet de classe bitset<N>
et initialise les bits du val
paramètre.
4)
Construit un objet de classe bitset<N>
et initialise les bits des caractères fournis dans une chaîne de zéros et un. Si des caractères de la chaîne sont autres que 0 ou 1, le constructeur lève un objet de classe invalid argument
. Si la position spécifiée (pos
) dépasse la longueur de la chaîne, le constructeur lève un objet de classe out_of_range
. Le constructeur définit uniquement les bits à la position j dans laquelle bitset
le caractère de la chaîne à la position pos + j
est 1. Par défaut, pos
est 0.
5)
Similaire à 4)
mais inclut un autre paramètre, count
qui spécifie le nombre de bits à initialiser. Il a deux paramètres facultatifs, _Zero
et _One
, qui indiquent le caractère dans str
lequel il doit être interprété pour signifier un 0 bits et un 1 bits, respectivement.
6)
Construit un objet de classe bitset<N>
, initialisant les bits N en valeurs qui correspondent aux caractères fournis dans une chaîne de caractères de style C de zéros et une. Vous appelez le constructeur sans transformer la chaîne en un type de chaîne, par exemple : bitset<5> b5("01011");
Exemple
// bitset_bitset.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
// Using the default constructor
using namespace std;
bitset<2> b0;
cout << "The set of bits in bitset<2> b0 is: ( "
<< b0 << " )." << endl;
// Using the second member function
bitset<5> b1 ( 6 );
cout << "The set of bits in bitset<5> b1( 6 ) is: ( "
<< b1 << " )." << endl;
// The template parameter N can be an expression
bitset< 2 * sizeof ( int ) > b2;
cout << "The set of bits in bitset< 2 * sizeof ( int ) > b2 is: ( "
<< b2 << " )." << endl;
// The base two representation will be truncated
// if its length exceeds the size of the bitset
bitset<3> b3 ( 6 );
cout << "The set of bits in bitset<3> b3( 6 ) is ( "
<< b3 << " )." << endl;
// Using a c-style string to initialize the bitset
bitset<7> b3andahalf ( "1001001" );
cout << "The set of bits in bitset<7> b3andahalf ( \"1001001\" )"
<< " is ( " << b3andahalf << " )." << endl;
// Using the fifth member function with the first parameter
string bitval4 ( "10011" );
bitset<5> b4 ( bitval4 );
cout << "The set of bits in bitset<5> b4( bitval4 ) is ( "
<< b4 << " )." << endl;
// Only part of the string may be used for initialization
// Starting at position 3 for a length of 6 (100110)
string bitval5 ("11110011011");
bitset<6> b5 ( bitval5, 3, 6 );
cout << "The set of bits in bitset<11> b5( bitval, 3, 6 ) is ( "
<< b5 << " )." << endl;
// The bits not initialized with part of the string
// will default to zero
bitset<11> b6 ( bitval5, 3, 5 );
cout << "The set of bits in bitset<11> b6( bitval5, 3, 5 ) is ( "
<< b6 << " )." << endl;
// Starting at position 2 and continue to the end of the string
bitset<9> b7 ( bitval5, 2 );
cout << "The set of bits in bitset<9> b7( bitval, 2 ) is ( "
<< b7 << " )." << endl;
}
The set of bits in bitset<2> b0 is: ( 00 ).
The set of bits in bitset<5> b1( 6 ) is: ( 00110 ).
The set of bits in bitset<2 * sizeof ( int ) > b2 is: ( 00000000 ).
The set of bits in bitset<3> b3( 6 ) is ( 110 ).
The set of bits in bitset<5> b4( bitval4 ) is ( 10011 ).
The set of bits in bitset<11> b5( bitval, 3, 6 ) is ( 100110 ).
The set of bits in bitset<11> b6( bitval5, 3, 5 ) is ( 00000010011 ).
The set of bits in bitset<9> b7( bitval, 2 ) is ( 110011011 ).
count
Retourne le nombre de bits définis dans la séquence de bits.
size_t count() const;
Valeur de retour
Nombre de bits définis dans la séquence de bits.
Exemple
// bitset_count.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1(4);
cout << "The collection of bits in the original bitset is: ( "
<< b1 << " )" << endl;
size_t i;
i = b1.count();
cout << "The number of bits in the bitset set to 1 is: "
<< i << "." << endl;
bitset<5> fb1;
fb1 = b1.flip();
cout << "The collection of flipped bits in the modified bitset "
<< "is: ( " << b1 << " )" << endl;
size_t ii;
ii = fb1.count();
cout << "The number of bits in the bitset set to 1 is: "
<< ii << "." << endl;
}
The collection of bits in the original bitset is: ( 00100 )
The number of bits in the bitset set to 1 is: 1.
The collection of flipped bits in the modified bitset is: ( 11011 )
The number of bits in the bitset set to 1 is: 4.
element_type
Type qui est un synonyme du type de données bool
et qui peut être utilisé pour référencer les bits des éléments d'un bitset
.
typedef bool element_type;
Exemple
// bitset_elem_type.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<3> b1 ( 2 );
cout << "Original bitset b1(6) is: ( "<< b1 << " )"
<< endl;
//Compare two ways to reference bits in a bitset
bool b;
bitset<5>::element_type e;
b = b1.test ( 2 );
if ( b )
cout << "The bit at position 2 of bitset b1"
<< "has a value of 1." << endl;
else
cout << "The bit at position 2 of bitset b1"
<< "has a value of 0." << endl;
b1[2] = 1;
cout << "Bitset b1 modified by b1[2] = 1 is: ( "<< b1 << " )"
<< endl;
e = b1.test ( 2 );
if ( e )
cout << "The bit at position 2 of bitset b1"
<< "has a value of 1." << endl;
else
cout << "The bit at position 2 of bitset b1"
<< "has a value of 0." << endl;
}
Original bitset b1(6) is: ( 010 )
The bit at position 2 of bitset b1has a value of 0.
Bitset b1 modified by b1[2] = 1 is: ( 110 )
The bit at position 2 of bitset b1has a value of 1.
flip
Inverse la valeur de tous les bits d’un bitset
ou inverse un seul bit à une position spécifiée.
bitset<N>& flip();
bitset<N>& flip(size_t pos);
Paramètres
pos
Position du bit dont la valeur doit être inversée.
Valeur de retour
Copie de la fonction membre pour bitset
laquelle la fonction membre a été appelée.
Notes
La deuxième fonction membre lève une out_of_range
exception si la position spécifiée en tant que paramètre est supérieure à la taille N
du bit dont le bitset<N>
bit a été inversé.
Exemple
// bitset_flip.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 6 );
cout << "The collection of bits in the original bitset is: ( "
<< b1 << " )" << endl;
bitset<5> fb1;
fb1 = b1.flip ( );
cout << "After flipping all the bits, the bitset becomes: ( "
<< fb1 << " )" << endl;
bitset<5> f3b1;
f3b1 = b1.flip ( 3 );
cout << "After flipping the fourth bit, the bitset becomes: ( "
<< f3b1 << " )" << endl << endl;
bitset<5> b2;
int i;
for ( i = 0 ; i <= 4 ; i++ )
{
b2.flip(i);
cout << b2 << " The bit flipped is in position "
<< i << ".\n";
}
}
The collection of bits in the original bitset is: ( 00110 )
After flipping all the bits, the bitset becomes: ( 11001 )
After flipping the fourth bit, the bitset becomes: ( 10001 )
00001 The bit flipped is in position 0.
00011 The bit flipped is in position 1.
00111 The bit flipped is in position 2.
01111 The bit flipped is in position 3.
11111 The bit flipped is in position 4.
hash
template <class T> struct hash;
template <size_t N> struct hash<bitset<N>>;
Aucune
Teste si aucun bit n'a été défini sur 1 dans un objet bitset
.
bool none() const;
Valeur de retour
true
si aucun bit n’a bitset
été défini sur 1 ; false
si au moins un bit a été défini sur 1.
Exemple
// bitset_none.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 6 );
bool b, rb;
cout << "Original bitset b1(6) is: ( " << b1 << " )"
<< endl;
b = b1.none ( );
if ( b )
cout << "None of the bits in bitset b1 are set to 1."
<< endl;
else
cout << "At least one of the bits in bitset b1 is set to 1."
<< endl;
bitset<5> rb1;
rb1 = b1.reset ( );
rb = rb1.none ( );
if ( rb )
cout << "None of the bits in bitset b1 are set to 1."
<< endl;
else
cout << "At least one of the bits in bitset b1 is set to 1."
<< endl;
}
Original bitset b1(6) is: ( 00110 )
At least one of the bits in bitset b1 is set to 1.
None of the bits in bitset b1 are set to 1.
operator!=
Vérifie si un bitset cible n’est pas égal à un bitset spécifié.
bool operator!=(const bitset<N>& right) const;
Paramètres
right
Qui bitset
doit être comparé au bitset cible pour l’inégalité.
Valeur de retour
true
si les bitsets sont différents ; false
s’ils sont les mêmes.
Notes
Les bitsets doivent être de la même taille.
Exemple
// bitset_op_NE.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
bitset<5> b2 ( 7 );
bitset<5> b3 ( 2 );
bitset<4> b4 ( 7 );
if ( b1 != b2 )
cout << "Bitset b1 is different from bitset b2." << endl;
else
cout << "Bitset b1 is the same as bitset b2." << endl;
if ( b1 != b3 )
cout << "Bitset b1 is different from bitset b3." << endl;
else
cout << "Bitset b1 is the same as bitset b3." << endl;
// This would cause an error because bitsets must have the
// same size to be tested
// if ( b1 != b4 )
// cout << "Bitset b1 is different from bitset b4." << endl;
// else
// cout << "Bitset b1 is the same as bitset b4." << endl;
}
Bitset b1 is the same as bitset b2.
Bitset b1 is different from bitset b3.
operator&=
Effectue une combinaison de bitsets au niveau du bit avec l’opération « and » (&
) au niveau du bit.
bitset<N>& operator&=(const bitset<N>& right);
Paramètres
right
Qui bitset
doit être combiné au niveau du bit avec le bitset cible.
Valeur de retour
Bitset cible modifié qui résulte de l’opération « et » au&
niveau du bit avec le bitset
paramètre spécifié.
Notes
Deux bits combinés par l’opérateur AND
retournent true
si chaque bit est vrai ; sinon, leur combinaison retourne false
.
Les deux bitsets doivent être de la même taille.
Exemple
// bitset_op_bitwise.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
bitset<5> b2 ( 11 );
bitset<4> b3 ( 7 );
cout << "The target bitset b1 is: ( "<< b1 << " )." << endl;
cout << "The parameter bitset b2 is: ( "<< b2 << " )." << endl;
cout << endl;
b1 &= b2;
cout << "After bitwise AND combination,\n"
<< "the target bitset b1 becomes: ( "<< b1 << " )."
<< endl;
// Note that the parameter-specified bitset is unchanged
cout << "The parameter bitset b2 remains: ( "<< b2 << " )."
<< endl;
// The following would cause an error because the bisets
// must be of the same size to be combined
// b1 &= b3;
}
The target bitset b1 is: ( 00111 ).
The parameter bitset b2 is: ( 01011 ).
After bitwise AND combination,
the target bitset b1 becomes: ( 00011 ).
The parameter bitset b2 remains: ( 01011 ).
operator<<
Décale les bits d'un bitset
vers la gauche d'un nombre spécifié de positions et retourne le résultat dans un nouveau bitset
.
bitset<N> operator<<(size_t pos) const;
Paramètres
pos
Nombre de positions à gauche que les bits dans le bitset
fichier doivent être décalés.
Valeur de retour
Bitset modifié avec les bits décalés vers la gauche du nombre nécessaire de positions.
Notes
La fonction d’opérateur membre retourne bitset(*this) <<= pos
où <<=
déplace les bits d’un bitset
point vers la gauche un nombre spécifié de positions et retourne le résultat à l’objet ciblé bitset
.
Exemple
// bitset_op_LS.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
cout << "The bitset b1 is: ( "<< b1 << " )." << endl;
bitset<5> b2;
b2 = b1 << 2;
cout << "After shifting the bits 2 positions to the left,\n"
<< " the bitset b2 is: ( "<< b2 << " )."
<< endl;
bitset<5> b3 = b2 >> 1;
cout << "After shifting the bits 1 position to the right,\n"
<< " the bitset b3 is: ( " << b3 << " )."
<< endl;
}
operator<<=
Décale les bits d'un bitset
vers la gauche d'un nombre spécifié de positions et retourne le résultat dans le bitset
ciblé.
bitset<N>& operator<<=(size_t pos);
Paramètres
pos
Nombre de positions à gauche dans les bitset
bits dans devront être décalés.
Valeur de retour
Modification ciblée bitset
afin que les bits aient été déplacés vers la gauche le nombre requis de positions.
Notes
Si aucun élément n’existe pour décaler à la position, la fonction efface le bit en le définissant sur 0.
Exemple
// bitset_op_LSE.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
cout << "The target bitset b1 is: ( "<< b1 << " )." << endl;
b1 <<= 2;
cout << "After shifting the bits 2 positions to the left,\n"
<< "the target bitset b1 becomes: ( "<< b1 << " )."
<< endl;
}
The target bitset b1 is: ( 00111 ).
After shifting the bits 2 positions to the left,
the target bitset b1 becomes: ( 11100 ).
operator==
Vérifie si un bitset cible est égal à un bitset spécifié.
bool operator==(const bitset<N>& right) const;
Paramètres
right
Qui bitset
doit être comparé au bitset cible pour l’égalité.
Valeur de retour
true
si les bitsets sont identiques ; false
s’ils sont différents.
Notes
Les bitsets doivent être de la même taille.
Exemple
// bitset_op_EQ.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
bitset<5> b2 ( 7 );
bitset<5> b3 ( 2 );
bitset<4> b4 ( 7 );
if ( b1 == b2 )
cout << "Bitset b1 is the same as bitset b2." << endl;
else
cout << "Bitset b1 is different from bitset b2." << endl;
if ( b1 == b3 )
cout << "Bitset b1 is the same as bitset b3." << endl;
else
cout << "Bitset b1 is different from bitset b3." << endl;
// This would cause an error because bitsets must have the
// same size to be tested
// if ( b1 == b4 )
// cout << "Bitset b1 is the same as bitset b4." << endl;
// else
// cout << "Bitset b1 is different from bitset b4." << endl;
}
Bitset b1 is the same as bitset b2.
Bitset b1 is different from bitset b3.
operator>>
Déplace les bits d’un bitset
point à droite, un nombre spécifié de positions et retourne le résultat à un nouveau bitset.
bitset<N> operator>>(size_t pos) const;
Paramètres
pos
Nombre de positions à droite des bits dans le bitset
champ à déplacer.
Valeur de retour
Un nouveau bitset où les bits ont été déplacés vers la droite le nombre requis de positions par rapport à la cible bitset
.
Exemple
// bitset_op_RS.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
cout << "The bitset b1 is: ( "<< b1 << " )." << endl;
bitset<5> b2;
b2 = b1 << 2;
cout << "After shifting the bits 2 positions to the left,\n"
<< "the bitset b2 is: ( "<< b2 << " )."
<< endl;
bitset<5> b3 = b2 >> 1;
cout << "After shifting the bits 1 position to the right,\n"
<< "the bitset b3 is: ( " << b3 << " )."
<< endl;
}
The bitset b1 is: ( 00111 ).
After shifting the bits 2 positions to the left,
the bitset b2 is: ( 11100 ).
After shifting the bits 1 position to the right,
the bitset b3 is: ( 01110 ).
operator>>=
Décale les bits d'un bitset
vers la droite d'un nombre spécifié de positions et retourne le résultat dans le bitset
ciblé.
bitset<N>& operator>>=(size_t pos);
Paramètres
pos
Nombre de positions à droite des bits dans le bitset
champ à déplacer.
Valeur de retour
Modification ciblée bitset
afin que les bits aient été déplacés vers la droite le nombre requis de positions.
Notes
Si aucun élément n’existe pour décaler à la position, la fonction efface le bit en le définissant sur 0.
Exemple
// bitset_op_RSE.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 28 );
cout << "The target bitset b1 is: ( "<< b1 << " )." << endl;
b1 >>= 2;
cout << "After shifting the bits 2 positions to the right,\n"
<< "the target bitset b1 becomes: ( "<< b1 << " )."
<< endl;
}
The target bitset b1 is: ( 11100 ).
After shifting the bits 2 positions to the right,
the target bitset b1 becomes: ( 00111 ).
operator[]
Retourne une référence à un bit à une position spécifiée d'un bitset
si le bitset
est modifiable ; sinon, retourne la valeur du bit à cette position.
bool operator[](size_t pos) const;
reference operator[](size_t pos);
Paramètres
pos
Position de localisation du bit dans le bitset
.
Notes
Lorsque vous définissez _ITERATOR_DEBUG_LEVEL
comme 1 ou 2 dans votre build, une erreur d’exécution se produit dans votre exécutable si vous tentez d’accéder à un élément en dehors des limites du bitset
fichier . Pour plus d'informations, consultez Checked Iterators.
Exemple
// bitset_op_REF.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bool b;
bitset<5> b1 ( 6 );
cout << "The initialized bitset<5> b1( 2 ) is: ( "<< b1 << " )."
<< endl;
int i;
for ( i = 0 ; i <= 4 ; i++ )
{
b = b1[ i ];
cout << " The bit in position "
<< i << " is " << b << ".\n";
}
}
operator^=
Effectue une combinaison de bitsets au niveau du bit avec l’opération « xor » (^
) au niveau du bit.
bitset<N>& operator^=(const bitset<N>& right);
Paramètres
right
Qui bitset
doit être combiné au niveau du bit avec le bitset cible.
Valeur de retour
Bitset cible modifié qui résulte de l’opération « xor » au^
niveau du bit avec le bitset
paramètre spécifié.
Notes
Deux bits combinés par l’opérateur « xor » au niveau du bit (^
) retournent true
si au moins un, mais pas les deux, des bits sont true
; sinon, leur combinaison renvoie false
.
Les bitsets doivent être de la même taille.
Exemple
// bitset_op_bitwiseOR.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
bitset<5> b2 ( 11 );
bitset<4> b3 ( 7 );
cout << "The target bitset b1 is: ( "<< b1 << " )." << endl;
cout << "The parameter bitset b2 is: ( "<< b2 << " )." << endl;
cout << endl;
b1 ^= b2;
cout << "After bitwise exclusive OR combination,\n"
<< "the target bitset b1 becomes: ( "<< b1 << " )."
<< endl;
// Note that the parameter-specified bitset in unchanged
cout << "The parameter bitset b2 remains: ( "<< b2 << " )."
<< endl;
// The following would cause an error because the bitsets
// must be of the same size to be combined
// b1 |= b3;
}
The target bitset b1 is: ( 00111 ).
The parameter bitset b2 is: ( 01011 ).
After bitwise exclusive OR combination,
the target bitset b1 becomes: ( 01100 ).
The parameter bitset b2 remains: ( 01011 ).
operator|=
Combine deux bitsets à l’aide de l’opération « ou » au|
niveau du bit.
bitset<N>& operator|=(const bitset<N>& right);
Paramètres
right
Qui bitset
doit être combiné au niveau du bit avec la cible bitset
.
Valeur de retour
Bitset cible modifié qui résulte de l’opération « ou » au|
niveau du bit avec le bitset
paramètre spécifié.
Notes
Deux bits combinés par l’opérateur inclusif OR
retournent true
si au moins un des bits est true
; si les deux bits sont false
, leur combinaison renvoie false
.
Les bitsets doivent être de la même taille.
Exemple
// bitset_op_BIO.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
bitset<5> b2 ( 11 );
bitset<4> b3 ( 7 );
cout << "The target bitset b1 is: ( "<< b1 << " )." << endl;
cout << "The parameter bitset b2 is: ( "<< b2 << " )." << endl;
cout << endl;
b1 |= b2;
cout << "After bitwise inclusive OR combination,\n"
<< "the target bitset b1 becomes: ( "<< b1 << " )."
<< endl;
// Note that the parameter-specified bitset in unchanged
cout << "The parameter bitset b2 remains: ( "<< b2 << " )."
<< endl;
// The following would cause an error because the bisets
// must be of the same size to be combined
// b1 |= b3;
}
The target bitset b1 is: ( 00111 ).
The parameter bitset b2 is: ( 01011 ).
After bitwise inclusive OR combination,
the target bitset b1 becomes: ( 01111 ).
The parameter bitset b2 remains: ( 01011 ).
operator~
Inverse tous les bits d’un bitset cible et retourne le résultat.
bitset<N> operator~() const;
Valeur de retour
Avec bitset
tous ses bits inversés par rapport à la cible bitset
.
Exemple
// bitset_op_invert.cpp
// compile with: /EHsc
#include <iostream>
#include <string>
#include <bitset>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
bitset<5> b2;
b2 = ~b1;
cout << "Bitset b1 is: ( "<< b1 << " )." << endl;
cout << "Bitset b2 = ~b1 is: ( "<< b2 << " )." << endl;
// These bits could also be flipped using the flip member function
bitset<5> b3;
b3 = b1.flip( );
cout << "Bitset b3 = b1.flip( ) is: ( "<< b2 << " )." << endl;
}
Bitset b1 is: ( 00111 ).
Bitset b2 = ~b1 is: ( 11000 ).
Bitset b3 = b1.flip( ) is: ( 11000 ).
reference
Classe proxy qui fournit des références aux bits contenus dans un bitset
et qui est utilisée pour accéder aux bits individuels et pour s'en servir comme une classe d'assistance pour l'opérateur operator[]
de la classe bitset
.
class reference {
friend class bitset<N>;
public:
reference& operator=(bool val);
reference& operator=(const reference& bitref);
bool operator~() const;
operator bool() const;
reference& flip();
};
Paramètres
val
Valeur de l’objet de type bool
à affecter à un bit dans un bitset
.
bitref
Référence du formulaire x [ i ]
au bit à la position i
dans bitset
x
.
Valeur de retour
Référence au bit bitset
spécifié par la position d’argument pour les premières, deuxième et cinquième fonctions membres de référence de classe, et true
ou false
, pour refléter la valeur du bit modifié dans la bitset
troisième et quatrième fonctions membres de référence de classe.
Notes
La classe reference
n’existe qu’en tant que classe d’assistance pour le bitset
operator[]
. La classe membre décrit un objet qui peut accéder à un bit individuel au sein d’un bitset
. Supposons qu’il s’agit b
d’un objet de type bool
, x
d’objets y
de type bitset<N>
et i
j
de positions valides au sein d’un tel objet. La notation x [i]
fait référence au bit à la position i
dans le bitset x
. Les fonctions membres de la classe reference
fournissent, dans l’ordre, les opérations suivantes :
Opération | Définition |
---|---|
x [i ] = b |
Stocke la bool valeur b à la position i du bit dans le bitset x . |
x [i ] = y [j ] |
Stocke la valeur du bit y [ j ] à la position i du bit dans le bitset x . |
b = ~ x [i ] |
Stocke la valeur retournée du bit x [ i ] in bool b . |
b = x [i ] |
Stocke la valeur du bit x [ i ] in bool b . |
x [i ]. flip ( ) |
Stocke la valeur retournée du bit x [ i ] à la position i du bit en x . |
Exemple
// bitset_reference.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 2 );
bitset<5> b2 ( 6 );
cout << "The initialized bitset<5> b1( 2 ) is: ( "<< b1 << " )."
<< endl;
cout << "The initialized bitset<5> b2( 6 ) is: ( "<< b2 << " )."
<< endl;
// Example of x [i] = b storing bool b at bit position i
// in bitset x
b1[ 0 ] = true;
cout << "The bitset<5> b1 with the bit at position 0 set to 1"
<< "is: ( "<< b1 << " )" << endl;
// Example of x [i] = y [j] storing the bool value of the
// bit at position j in bitset y at bit position i in bitset x
b2 [4] = b1 [0]; // b1 [0] = true
cout << "The bitset<5> b2 with the bit at position 4 set to the "
<< "value\nof the bit at position 0 of the bit in "
<< "bitset<5> b1 is: ( "<< b2 << " )" << endl;
// Example of b = ~x [i] flipping the value of the bit at
// position i of bitset x and storing the value in an
// object b of type bool
bool b = ~b2 [4]; // b2 [4] = false
if ( b )
cout << "The value of the object b = ~b2 [4] "
<< "of type bool is true." << endl;
else
cout << "The value of the object b = ~b2 [4] "
<< "of type bool is false." << endl;
// Example of b = x [i] storing the value of the bit at
// position i of bitset x in the object b of type bool
b = b2 [4];
if ( b )
cout << "The value of the object b = b2 [4] "
<< "of type bool is true." << endl;
else
cout << "The value of the object b = b2 [4] "
<< "of type bool is false." << endl;
// Example of x [i] . flip ( ) toggling the value of the bit at
// position i of bitset x
cout << "Before flipping the value of the bit at position 4 in "
<< "bitset b2,\nit is ( "<< b2 << " )." << endl;
b2 [4].flip( );
cout << "After flipping the value of the bit at position 4 in "
<< "bitset b2,\nit becomes ( "<< b2 << " )." << endl;
bool c;
c = b2 [4].flip( );
cout << "After a second flip, the value of the position 4 "
<< "bit in b2 is now: " << c << ".";
}
The initialized bitset<5> b1( 2 ) is: ( 00010 ).
The initialized bitset<5> b2( 6 ) is: ( 00110 ).
The bitset<5> b1 with the bit at position 0 set to 1 is: ( 00011 )
The bitset<5> b2 with the bit at position 4 set to the value
of the bit at position 0 of the bit in bitset<5> b1 is: ( 10110 )
The value of the object b = ~b2 [4] of type bool is false.
The value of the object b = b2 [4] of type bool is true.
Before flipping the value of the bit at position 4 in bitset b2,
it is ( 10110 ).
After flipping the value of the bit at position 4 in bitset b2,
it becomes ( 00110 ).
After a second flip, the value of the position 4 bit in b2 is now: 1.
reset
Réinitialise tous les bits d'un bitset
à 0 ou réinitialise à 0 un bit à une position spécifiée.
bitset<N>& reset();
bitset<N>& reset(size_t pos);
Paramètres
pos
Position du bit dans la bitset
valeur 0.
Valeur de retour
Copie de la bitset
fonction membre pour laquelle la fonction membre a été appelée.
Notes
La deuxième fonction membre lève une out_of_range
exception si la position spécifiée est supérieure à la taille du bitset
.
Exemple
// bitset_reset.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 13 );
cout << "The set of bits in bitset<5> b1(13) is: ( "<< b1 << " )"
<< endl;
bitset<5> b1r3;
b1r3 = b1.reset( 2 );
cout << "The collection of bits obtained from resetting the\n"
<< "third bit of bitset b1 is: ( "<< b1r3 << " )"
<< endl;
bitset<5> b1r;
b1r = b1.reset( );
cout << "The collecion of bits obtained from resetting all\n"
<< "the elements of the bitset b1 is: ( "<< b1r << " )"
<< endl;
}
The set of bits in bitset<5> b1(13) is: ( 01101 )
The collecion of bits obtained from resetting the
third bit of bitset b1 is: ( 01001 )
The collecion of bits obtained from resetting all
the elements of the bitset b1 is: ( 00000 )
set
Définit tous les bits d'un bitset
sur 1 ou définit sur 1 un bit à une position spécifiée.
bitset<N>& set();
bitset<N>& set(
size_t pos,
bool val = true);
Paramètres
pos
Position du bit dans la bitset
valeur affectée.
val
Valeur à affecter au bit à la position spécifiée.
Valeur de retour
Copie de la bitset
fonction membre pour laquelle la fonction membre a été appelée.
Notes
La deuxième fonction membre lève une out_of_range
exception si la position spécifiée est supérieure à la taille du bitset
.
Exemple
// bitset_set.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 6 );
cout << "The set of bits in bitset<5> b1(6) is: ( "<< b1 << " )"
<< endl;
bitset<5> b1s0;
b1s0 = b1.set( 0 );
cout << "The collecion of bits obtained from setting the\n"
<< "zeroth bit of bitset b1 is: ( "<< b1s0 << " )"
<< endl;
bitset<5> bs1;
bs1 = b1.set( );
cout << "The collecion of bits obtained from setting all the\n"
<< "elements of the bitset b1 is: ( "<< bs1 << " )"
<< endl;
}
The set of bits in bitset<5> b1(6) is: ( 00110 )
The collecion of bits obtained from setting the
zeroth bit of bitset b1 is: ( 00111 )
The collecion of bits obtained from setting all the
elements of the bitset b1 is: ( 11111 )
size
Retourne le nombre de bits d'un objet bitset
.
size_t size() const;
Valeur de retour
Nombre de bits, N
dans un bitset<N>
.
Exemple
// bitset_size.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main()
{
using namespace std;
bitset<5> b1(6);
size_t i;
cout << "The set of bits in bitset<5> b1( 6 ) is: ( "<< b1 << " )"
<< endl;
i = b1.size();
cout << "The number of bits in bitset b1 is: " << i << "."
<< endl;
}
The set of bits in bitset<5> b1( 6 ) is: ( 00110 )
The number of bits in bitset b1 is: 5.
test
Teste si le bit à une position spécifiée d'un bitset
est défini sur 1.
bool test(size_t pos) const;
Paramètres
pos
Position du bit à bitset
tester pour sa valeur.
Valeur de retour
true
si le bit spécifié par la position de l’argument a la valeur 1 ; sinon, false
.
Notes
La fonction membre lève une out_of_range
to_string
Convertit un objet bitset
en une représentation sous forme de chaîne.
template <class charT = char, class traits = char_traits<charT>, class Allocator = allocator<charT> >
basic_string<charT, traits, Allocator> to_string(charT zero = charT('0'), charT one = charT('1')) const;
Valeur retournée
Objet de chaîne de classe basic_string
, où chaque bit défini dans le fichier bitset
a un caractère correspondant de 1 et un caractère de 0 si le bit n’est pas défini.
Exemple
// bitset_to_string.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
#include <string>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
cout << "The ordered set of bits in the bitset<5> b1( 7 )"
<< "\n that was generated by the number 7 is: ( "
<< b1 << " )" << endl;
string s1;
s1 = b1.template to_string<char,
char_traits<char>, allocator<char> >( );
cout << "The string returned from the bitset b1"
<< "\n by the member function to_string( ) is: "
<< s1 << "." << endl;
}
The ordered set of bits in the bitset<5> b1( 7 )
that was generated by the number 7 is: ( 00111 )
The string returned from the bitset b1
by the member function to_string( ) is: 00111.
to_ullong
Retourne une unsigned long long
valeur qui contient les mêmes bits définis que le contenu de l’objet bitset
.
unsigned long long to_ullong() const;
Valeur retournée
Retourne la somme des valeurs de bits qui se trouvent dans la séquence de bits en tant que unsigned long long
. Cette unsigned long long
valeur recréerait les mêmes bits de jeu s’il est utilisé pour initialiser un bitset
.
Exceptions
Lève un objet si un overflow_error
bit dans la séquence de bits a une valeur de bit qui ne peut pas être représentée comme valeur de type unsigned long long
.
Notes
Retourne la somme des valeurs de bits qui se trouvent dans la séquence de bits en tant que unsigned long long
.
to_ulong
Convertit un bitset
objet en entier qui générerait la séquence de bits contenue si elle était utilisée pour initialiser le bitset
.
unsigned long to_ulong( ) const;
Valeur retournée
Entier qui générerait les bits dans un bitset
si utilisé dans l’initialisation du bitset
.
Notes
L’application de la fonction membre renvoie l’entier qui a la même séquence de 1 et 0 chiffres que celui trouvé dans la séquence de bits contenus dans le bitset
.
La fonction membre lève un overflow_error
objet si un bit dans la séquence de bits a une valeur de bit qui ne peut pas être représentée comme valeur de type unsigned long
.
Exemple
// bitset_to_ulong.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
int main( )
{
using namespace std;
bitset<5> b1 ( 7 );
cout << "The ordered set of bits in the bitset<5> b1( 7 )"
<< "\n that was generated by the number 7 is: ( "
<< b1 << " )" << endl;
unsigned long int i;
i = b1.to_ulong( );
cout << "The integer returned from the bitset b1,"
<< "\n by the member function to_long( ), that"
<< "\n generated the bits as a base two number is: "
<< i << "." << endl;
}
The ordered set of bits in the bitset<5> b1( 7 )
that was generated by the number 7 is: ( 00111 )
The integer returned from the bitset b1,
by the member function to_long( ), that
generated the bits as a base two number is: 7.