Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Beschrijft een type object waarin een reeks wordt opgeslagen die bestaat uit een vast aantal bits dat een compacte manier biedt om vlaggen voor een set items of voorwaarden te bewaren. De bitset klasse ondersteunt bewerkingen op objecten van het type bitset die een verzameling bits bevatten en constante toegang tot elke bit bieden.
Syntax
template <size_t N>
class bitset
Parameters
N
Hiermee geeft u het aantal bits in het bitset object met een niet-nul geheel getal van het type size_t dat tijdens het compileren bekend moet zijn.
Remarks
In tegenstelling tot de vergelijkbare vector<bool> klasse heeft de bitset klasse geen iterators en is het geen C++ Standard Library-container. Het verschilt ook van vector<bool> een bepaalde grootte die tijdens het compileren is vastgesteld, overeenkomstig de grootte die is opgegeven door de sjabloonparameter wanneer de bitset<N> parameter N wordt gedeclareerd.
Een bit wordt ingesteld als de waarde 1 is en opnieuw wordt ingesteld als de waarde 0 is. Als u een beetje wilt spiegelen of omkeren, is het wijzigen van de waarde van 1 in 0 of van 0 in 1. De N bits in een worden bitset geïndexeerd door gehele getallen van 0 tot N - 1, waarbij 0 de eerste bitpositie indexeert en N - 1 de uiteindelijke bitpositie.
Members
Constructors
| Naam | Description |
|---|---|
bitset |
Hiermee wordt een object van klasse bitset<N> samengesteld en worden de bits geïnitialiseerd naar nul, naar een bepaalde opgegeven waarde of naar waarden die zijn verkregen uit tekens in een tekenreeks. |
Typedefs
| Naam | Description |
|---|---|
element_type |
Een type dat een synoniem is voor het gegevenstype bool en kan worden gebruikt om te verwijzen naar element-bits in een bitset. |
Functions
| Naam | Description |
|---|---|
all |
Test alle bits in deze bitset om te bepalen of ze allemaal zijn ingesteld op true. |
any |
De lidfunctie test of een bit in de reeks is ingesteld op 1. |
count |
De lidfunctie retourneert het aantal bits dat is ingesteld in de bitreeks. |
flip |
Hiermee wordt de waarde van alle bits in een bitset of omgekeerd één bit op een opgegeven positie. |
none |
Test of er geen bit is ingesteld op 1 in een bitset object. |
reset |
Hiermee stelt u alle bits in een bitset tot 0 opnieuw in of stelt u een bit in op een opgegeven positie in 0. |
set |
Hiermee stelt u alle bits in een bitset op 1 of stelt u een bit in op een opgegeven positie op 1. |
size |
Retourneert het aantal bits in een bitset object. |
test |
Test of de bit op een opgegeven positie in een bitset is ingesteld op 1. |
to_string |
Converteert een bitset object naar een tekenreeksweergave. |
to_ullong |
Retourneert de som van de bitwaarden in de bitset als een unsigned long long. |
to_ulong |
Converteert een bitset object naar het unsigned long object dat de reeks bits zou genereren die zijn opgenomen als deze wordt gebruikt om de bitset. |
Klassen
| Naam | Description |
|---|---|
reference |
Een proxyklasse die verwijzingen levert naar bits in een bitset die wordt gebruikt om de afzonderlijke bits te openen en te bewerken als helperklasse voor de operator[] klasse bitset. |
Operatoren
| Naam | Description |
|---|---|
operator!= |
Test een doel bitset voor ongelijkheid met een opgegeven bitset. |
operator&= |
Hiermee wordt een bitsgewijze combinatie van bitsets uitgevoerd met de bitsgewijze 'en' (&) bewerking. |
operator<< |
Verschuift de bits in een bitset naar links een opgegeven aantal posities en retourneert het resultaat naar een nieuw bitset. |
operator<<= |
Verschuift de bits in een bitset naar links een opgegeven aantal posities en retourneert het resultaat naar het doel bitset. |
operator== |
Test een doel bitset voor gelijkheid met een opgegeven bitset. |
operator>> |
Verschuift de bits in een bitset naar rechts een opgegeven aantal posities en retourneert het resultaat naar een nieuw bitset. |
operator>>= |
Verplaatst de bits in een bitset naar rechts een opgegeven aantal posities en retourneert het resultaat naar het doel bitset. |
operator[] |
Retourneert een verwijzing naar een bit op een opgegeven positie in een bitset als de bitset functie kan worden gewijzigd. Anders wordt de waarde van de bit op die positie geretourneerd. |
| operator^= | Hiermee wordt een bitsgewijze combinatie van bitsets uitgevoerd met de bitsgewijze 'xor'-bewerking (^). |
operator|= |
Hiermee wordt een bitsgewijze combinatie van bitsets uitgevoerd met de bitsgewijze 'of' (|) bewerking. |
operator~ |
Hiermee worden alle bits in een doel bitset omgedraaid en wordt het resultaat geretourneerd. |
Structures
| Naam | Description |
|---|---|
hash |
all
Test alle bits in deze bitset om te bepalen of ze allemaal zijn ingesteld op waar.
bool all() const;
Retourwaarde
Retourneert true als alle bits in deze set waar zijn. Retourneert false als een of meer bits onwaar zijn.
any
Test of een bit in de reeks is ingesteld op 1.
bool any() const;
Retourwaarde
true als een bit in dit bitset is ingesteld op 1; false als alle bits 0 zijn.
Example
// 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
Hiermee wordt een object van klasse bitset<N> samengesteld en worden de bits geïnitialiseerd naar nul of naar een bepaalde opgegeven waarde, of naar waarden die zijn verkregen uit tekens in een tekenreeks.
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'));
Parameters
val
Het niet-ondertekende gehele getal waarvan de basis twee weergave wordt gebruikt om de bits in de bitset constructie te initialiseren.
str
De tekenreeks van nullen en nullen die worden gebruikt om de bitset bitwaarden te initialiseren.
pos
De positie van het teken in de tekenreeks, tellend van links naar rechts en beginnend met nul, gebruikt om de eerste bit in de bitsette initialiseren.
count
Het aantal tekens in de tekenreeks dat wordt gebruikt voor het opgeven van initiële waarden voor de bits in de bitset.
Zero
Het teken dat wordt gebruikt om een nul weer te geven. De standaardwaarde is '0'.
One
Het teken dat wordt gebruikt om een teken weer te geven. De standaardwaarde is '1'.
Remarks
1) Hiermee wordt een object van klasse bitset<N> samengesteld en worden alle N-bits geïnitialiseerd tot een standaardwaarde van nul.
2-3) Hiermee maakt u een object van klasse bitset<N> en initialiseert u de bits van de val parameter.
4) Hiermee maakt u een object van klasse bitset<N> en initialiseert u bits van de tekens die zijn opgegeven in een tekenreeks van nullen en nullen. Als er andere tekens van de tekenreeks zijn dan 0 of 1, genereert de constructor een object van klasse invalid argument. Als de opgegeven positie (pos) groter is dan de lengte van de tekenreeks, genereert de constructor een object van klasse out_of_range. De constructor stelt alleen de bits op positie j in het bitset teken in de tekenreeks op positie pos + j 1. Is standaard pos 0.
5) Vergelijkbaar met 4) maar bevat een andere parameter, countdie het aantal bits aangeeft dat moet worden geïnitialiseerd. Het bevat twee optionele parameters _Zero en _One, die aangeven in welk teken str moet worden geïnterpreteerd om respectievelijk een 0-bits en een 1-bits te betekenen.
6) Hiermee wordt een object van klasse samengesteld bitset<N>, waarbij de N-bits worden geïnitialiseerd naar waarden die overeenkomen met de tekens die zijn opgegeven in een tekenreeks in C-stijl van nullen en nullen. U roept de constructor aan zonder de tekenreeks naar een tekenreekstype te gieten, bijvoorbeeld: bitset<5> b5("01011");
Example
// 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
Retourneert het aantal bits dat is ingesteld in de bitreeks.
size_t count() const;
Retourwaarde
Het aantal bits dat in de bitreeks is ingesteld.
Example
// 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
Een type dat een synoniem is voor het gegevenstype bool en kan worden gebruikt om te verwijzen naar element-bits in een bitset.
typedef bool element_type;
Example
// 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
Hiermee wordt de waarde van alle bits in een bitset of omgekeerd één bit op een opgegeven positie.
bitset<N>& flip();
bitset<N>& flip(size_t pos);
Parameters
pos
De positie van de bit waarvan de waarde moet worden omgekeerd.
Retourwaarde
Een kopie van de gewijzigde bitset functie waarvoor de lidfunctie is aangeroepen.
Remarks
De functie tweede lid genereert een out_of_range uitzondering als de positie die is opgegeven als een parameter groter is dan de grootte N van de bitset<N> bit waarvan de bit is omgekeerd.
Example
// 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>>;
none
Test of er geen bit is ingesteld op 1 in een bitset object.
bool none() const;
Retourwaarde
true als er geen bit is bitset ingesteld op 1; false als ten minste één bit is ingesteld op 1.
Example
// 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!=
Test een doel-bitset op ongelijkheid met een opgegeven bitset.
bool operator!=(const bitset<N>& right) const;
Parameters
right
Dit bitset moet worden vergeleken met de doel-bitset voor ongelijkheid.
Retourwaarde
true als de bitsets verschillend zijn; false als ze hetzelfde zijn.
Remarks
Bitsets moeten dezelfde grootte hebben.
Example
// 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&=
Hiermee wordt een bitsgewijze combinatie van bitsets uitgevoerd met de bitsgewijze 'en' (&) bewerking.
bitset<N>& operator&=(const bitset<N>& right);
Parameters
right
Dit bitset is om bitwise te combineren met de doel-bitset.
Retourwaarde
De gewijzigde doel-bitset die het resultaat is van de bitsgewijze 'en' (&) bewerking met de bitset opgegeven als parameter.
Remarks
Twee bits die door de AND operator worden gecombineerd, retourneren true als elke bit waar is; anders retourneert falsede combinatie ervan.
De twee bitsets moeten dezelfde grootte hebben.
Example
// 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<<
Verschuift de bits in een bitset naar links een opgegeven aantal posities en retourneert het resultaat naar een nieuw bitset.
bitset<N> operator<<(size_t pos) const;
Parameters
pos
Het aantal posities links dat de bits in de bitset bits moeten worden verschoven.
Retourwaarde
De gewijzigde bitset met de bits verschoven naar links het vereiste aantal posities.
Remarks
De operatorfunctie van het lid retourneert bitset(*this) <<= pos waar <<= de bits in een bitset links een opgegeven aantal posities worden verplaatst en het resultaat wordt geretourneerd naar het doel bitset.
Example
// 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<<=
Verschuift de bits in een bitset naar links een opgegeven aantal posities en retourneert het resultaat naar het doel bitset.
bitset<N>& operator<<=(size_t pos);
Parameters
pos
Het aantal posities links in de bitset bits moet worden verschoven.
Retourwaarde
Het doel is bitset gewijzigd zodat de bits naar links zijn verschoven naar het vereiste aantal posities.
Remarks
Als er geen element bestaat om naar de positie te gaan, wordt de bit door de functie gewist naar een waarde van 0.
Example
// 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==
Test een doel-bitset voor gelijkheid met een opgegeven bitset.
bool operator==(const bitset<N>& right) const;
Parameters
right
Dit bitset moet worden vergeleken met de doel-bitset voor gelijkheid.
Retourwaarde
true als de bitsets hetzelfde zijn; false als ze anders zijn.
Remarks
Bitsets moeten dezelfde grootte hebben.
Example
// 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>>
Verschuift de bits in een bitset naar rechts een opgegeven aantal posities en retourneert het resultaat naar een nieuwe bitset.
bitset<N> operator>>(size_t pos) const;
Parameters
pos
Het aantal posities rechts in de bits moet bitset worden verschoven.
Retourwaarde
Een nieuwe bitset waarbij de bits naar rechts zijn verschoven, het vereiste aantal posities ten opzichte van het doel bitset.
Example
// 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>>=
Verplaatst de bits in een bitset naar rechts een opgegeven aantal posities en retourneert het resultaat naar het doel bitset.
bitset<N>& operator>>=(size_t pos);
Parameters
pos
Het aantal posities rechts in de bits moet bitset worden verschoven.
Retourwaarde
Het doel is bitset gewijzigd zodat de bits naar rechts zijn verschoven naar het juiste aantal posities.
Remarks
Als er geen element bestaat om naar de positie te gaan, wordt de bit door de functie gewist naar een waarde van 0.
Example
// 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[]
Retourneert een verwijzing naar een bit op een opgegeven positie in een bitset als de bitset functie kan worden gewijzigd. Anders wordt de waarde van de bit op die positie geretourneerd.
bool operator[](size_t pos) const;
reference operator[](size_t pos);
Parameters
pos
De positie die de bit binnen de bitset.
Remarks
Wanneer u definieert _ITERATOR_DEBUG_LEVEL als 1 of 2 in uw build, treedt er een runtimefout op in het uitvoerbare bestand als u probeert toegang te krijgen tot een element buiten de grenzen van de bitsetbuild. Zie Gecontroleerde iterators voor meer informatie.
Example
// 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^=
Hiermee wordt een bitsgewijze combinatie van bitsets uitgevoerd met de bitsgewijze 'xor'-bewerking (^).
bitset<N>& operator^=(const bitset<N>& right);
Parameters
right
Dit bitset is om bitwise te combineren met de doel-bitset.
Retourwaarde
De gewijzigde doel-bitset die het resultaat is van de bitsgewijze 'xor'-bewerking (^) met de bitset opgegeven parameter.
Remarks
Twee bits gecombineerd door de bitsgewijze xor-operator (^) retourneren true als ten minste één, maar niet beide bits, van de bits zijn true; anders retourneert falsede combinatie .
Bitsets moeten dezelfde grootte hebben.
Example
// 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|=
Combineert twee bitsets met behulp van de bitsgewijze 'of' (|) bewerking.
bitset<N>& operator|=(const bitset<N>& right);
Parameters
right
De bitset die moet worden gecombineerd met bitwise met het doel bitset.
Retourwaarde
De gewijzigde doel-bitset die het resultaat is van de bitsgewijze 'of' (|) bewerking met de bitset opgegeven als parameter.
Remarks
Twee bits gecombineerd door de inclusieve OR operator retourneren true als ten minste één van de bits is true; als beide bits zijn false, retourneert falsehun combinatie .
Bitsets moeten dezelfde grootte hebben.
Example
// 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~
Hiermee worden alle bits in een doel-bitset omgedraaid en wordt het resultaat geretourneerd.
bitset<N> operator~() const;
Retourwaarde
De bitset met al zijn bits omgekeerd met betrekking tot de beoogde bitset.
Example
// 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
Een proxyklasse die verwijzingen levert naar bits in een bitset die wordt gebruikt om de afzonderlijke bits te openen en te bewerken als helperklasse voor de operator[] klasse 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();
};
Parameters
val
De waarde van het object van het type bool dat moet worden toegewezen aan een bit in een bitset.
bitref
Een verwijzing van het formulier x [ i ] naar de bit op positie i in bitsetx.
Retourwaarde
Een verwijzing naar de bit in de bitset opgegeven argumentpositie voor de eerste, tweede en vijfde lidfunctie van klasseverwijzing, en true of falseom de waarde van de gewijzigde bit in de bitset voor de derde en vierde lidfuncties van klasseverwijzing weer te geven.
Remarks
De klasse reference bestaat alleen als helperklasse voor de bitsetoperator[]. De lidklasse beschrijft een object dat toegang heeft tot een afzonderlijke bit binnen een bitset. Laat b een object van het type boolen xy objecten van het type bitset<N>en i geldige j posities binnen een dergelijk object zijn. De notatie x [i] verwijst naar de bit op positie i in bitset x. De lidfuncties van klasse reference bieden de volgende bewerkingen:
| Operation | Definition |
|---|---|
x[i] = b |
Slaat bool de waarde b op bitpositie i in bitset xop. |
x[i] = y[j] |
Slaat de waarde van de bit y[ j] op bitpositie i in bitset xop. |
b = ~ x[i] |
Slaat de gespiegelde waarde van de bit x[ ] op in boolb. i |
b
=
x[i] |
Slaat de waarde van de bit x[ i] op in boolb. |
x[i].
flip( ) |
Slaat de gespiegelde waarde van de bit x[ i] terug op bitpositie i in x. |
Example
// 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
Hiermee stelt u alle bits in een bitset tot 0 opnieuw in of stelt u een bit in op een opgegeven positie in 0.
bitset<N>& reset();
bitset<N>& reset(size_t pos);
Parameters
pos
De positie van de bit in de bitset te herstellen naar 0.
Retourwaarde
Een kopie van het bitset exemplaar waarvoor de lidfunctie is aangeroepen.
Remarks
De functie tweede lid genereert een out_of_range uitzondering als de opgegeven positie groter is dan de grootte van de bitset.
Example
// 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
Hiermee stelt u alle bits in een bitset op 1 of stelt u een bit in op een opgegeven positie op 1.
bitset<N>& set();
bitset<N>& set(
size_t pos,
bool val = true);
Parameters
pos
De positie van de bit in de bitset om de toegewezen waarde in te stellen.
val
De waarde die moet worden toegewezen aan de bit op de opgegeven positie.
Retourwaarde
Een kopie van het bitset exemplaar waarvoor de lidfunctie is aangeroepen.
Remarks
De functie tweede lid genereert een out_of_range uitzondering als de opgegeven positie groter is dan de grootte van de bitset.
Example
// 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
Retourneert het aantal bits in een bitset object.
size_t size() const;
Retourwaarde
Het aantal bits, Nin een bitset<N>.
Example
// 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
Test of de bit op een opgegeven positie in een bitset is ingesteld op 1.
bool test(size_t pos) const;
Parameters
pos
De positie van de bit in de bitset te testen waarde.
Retourwaarde
true als de bit die is opgegeven door de argumentpositie is ingesteld op 1; anders, false.
Remarks
De lidfunctie genereert een out_of_range
to_string
Converteert een bitset object naar een tekenreeksweergave.
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;
Retourwaarde
Een tekenreeksobject van klasse basic_string, waarbij elke bitsset in de klasse bitset een corresponderend teken van 1 heeft en een teken van 0 als de bit niet is ingesteld.
Example
// 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
Retourneert een unsigned long long waarde die dezelfde bits bevat die zijn ingesteld als de inhoud van het bitset object.
unsigned long long to_ullong() const;
Retourwaarde
Retourneert de som van de bitwaarden die zich in de bitreeks bevinden als een unsigned long long. Met deze unsigned long long waarde worden dezelfde set bits opnieuw gemaakt als deze wordt gebruikt voor het initialiseren van een bitset.
Exceptions
Hiermee wordt een overflow_error object gegenereerd als een bit in de bitreeks een bitwaarde heeft die niet kan worden weergegeven als een waarde van het type unsigned long long.
Remarks
Retourneert de som van de bitwaarden die zich in de bitreeks bevinden als een unsigned long long.
to_ulong
Converteert een bitset object naar het gehele getal dat de reeks bits zou genereren als deze wordt gebruikt om het bitsette initialiseren.
unsigned long to_ulong( ) const;
Retourwaarde
Een geheel getal dat de bits genereert in een bitset als deze wordt gebruikt in de initialisatie van de bitset.
Remarks
Als u de lidfunctie toepast, wordt het gehele getal geretourneerd dat dezelfde reeks van 1 en 0 cijfers heeft, zoals wordt gevonden in de reeks bits in de bitset.
De lidfunctie genereert een overflow_error object als een bit in de bitreeks een bitwaarde heeft die niet kan worden weergegeven als een waarde van het type unsigned long.
Example
// 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.