bitset
-Klasse
Beschreibt einen Typ von Objekt, das eine Sequenz speichert, die aus einer festen Anzahl von Bits besteht, die eine kompakte Möglichkeit bieten, Flags für eine Menge von Elementen oder Bedingungen bereitzustellen. Die bitset
Klasse unterstützt Vorgänge für Objekte vom Typ Bitset, die eine Auflistung von Bits enthalten, und bieten konstanten Zeitzugriff auf die einzelnen Bits.
Syntax
template <size_t N>
class bitset
Parameter
N
Gibt die Anzahl der Bits im bitset
Objekt mit einer Nichtzero-Ganzzahl des Typs size_t
an, die zur Kompilierungszeit bekannt sein muss.
Hinweise
Im Gegensatz zur ähnlichen vector<bool>
Klasse verfügt die bitset
Klasse nicht über Iteratoren und ist kein C++-Standardbibliothekscontainer. Es unterscheidet sich auch von vector<bool>
einer bestimmten Größe, die zur Kompilierungszeit festgelegt ist, gemäß der Größe, die durch den Vorlagenparameter N
angegeben wird, wenn dies bitset<N>
deklariert wird.
Ein Bit ist festgelegt, wenn es den Wert 1 hat, und zurückgesetzt, wenn es den Wert 0 hat. Ein Bit zu spiegeln oder umzukehren bedeutet, dass sein Wert von 1 in 0 oder von 0 in 1 geändert wird. Die N
Bits in a bitset
werden von ganzzahligen Werten von 0 bis N
-1 indiziert, wobei 0 die erste Bitposition indiziert und N
- 1 die letzte Bitposition.
Member
Konstruktoren
Name | Beschreibung |
---|---|
bitset |
Erstellt ein bitset<N> -Objekt und initialisiert die Bits mit 0 (Null), mit einem angegebenen Wert oder mit Werten, die aus Zeichen einer Zeichenfolge ermittelt wurden. |
TypeDefs
Name | Beschreibung |
---|---|
element_type |
Ein Typ, der gleichbedeutend mit dem Datentyp bool ist und verwendet werden kann, um auf Elementbits in einem bitset -Objekt zu verweisen. |
Functions
Name | Beschreibung |
---|---|
all |
Testet alle Bits in diesem Bereichbitset , um zu bestimmen, ob sie alle auf ".true |
any |
Die Memberfunktion überprüft, ob jedes Bit in der Sequenz auf 1 festgelegt ist. |
count |
Die Memberfunktion gibt die Anzahl von Bits zurück, die in der Bitsequenz festgelegt sind. |
flip |
Kehrt den Wert aller Bits in einem bitset oder ein einzelnes Bit an einer angegebenen Position um. |
none |
Überprüft, ob keines der Bits in einem bitset -Objekt auf 1 festgelegt wurde. |
reset |
Setzt alle Bits in einem bitset -Objekt oder ein Bit an einer angegebenen Position auf 0 zurück. |
set |
Legt alle Bits in einem bitset -Objekt oder ein Bit an einer angegebenen Position auf 1 fest. |
size |
Gibt die Anzahl von Bits eines bitset -Objekts zurück. |
test |
Überprüft, ob das Bit an einer angegebenen Position in einem bitset -Objekt auf 1 festgelegt ist. |
to_string |
Konvertiert ein bitset -Objekt in eine Zeichenfolgendarstellung. |
to_ullong |
Gibt die Summe der Bitwerte im bitset -Objekt als einen unsigned long long -Wert zurück. |
to_ulong |
Konvertiert ein bitset -Objekt in den unsigned long -Wert, der die Sequenz der enthalten Bits erzeugen würde, wenn er zum Initialisieren des bitset -Objekts verwendet werden würde. |
Klassen
name | Beschreibung |
---|---|
reference |
Eine Proxyklasse, die Verweise auf Bits bereitstellt, die in einem bitset -Objekt enthalten sind, das als unterstützende Klasse für den operator[] der bitset -Klasse dazu verwendet wird, auf einzelne Bits zuzugreifen sowie einzelne Bits zu verarbeiten. |
Operatoren
Name | Beschreibung |
---|---|
operator!= |
Überprüft ein bitset -Zielobjekt auf Ungleichheit mit einem angegebenen bitset -Objekt. |
operator&= |
Führt eine bitweise Kombination von Bitsets mit dem bitweisen "and" (& ) -Vorgang aus. |
operator<< |
Verschiebt die Bits in einem bitset -Objekt um eine angegebene Anzahl von Positionen nach links und gibt das Ergebnis in einem neuen bitset -Objekt zurück. |
operator<<= |
Verschiebt die Bits in einem bitset -Objekt um eine angegebene Anzahl von Positionen nach links und gibt das Ergebnis im selben bitset -Objekt zurück. |
operator== |
Überprüft ein bitset -Zielobjekt auf Gleichheit mit einem angegebenen bitset -Objekt. |
operator>> |
Verschiebt die Bits in einem bitset -Objekt um eine angegebene Anzahl von Positionen nach rechts und gibt das Ergebnis in einem neuen bitset -Objekt zurück. |
operator>>= |
Verschiebt die Bits in einem bitset -Objekt um eine angegebene Anzahl von Positionen nach rechts und gibt das Ergebnis im selben bitset -Objekt zurück. |
operator[] |
Gibt einen Verweis auf ein Bit an einer angegebenen Position eines bitset -Objekts zurück, wenn das bitset geändert werden kann. Gibt andernfalls den Wert zurück, den das Bit an dieser Position hat. |
operator^= | Führt eine bitweise Kombination von Bitsets mit dem bitweisen "xor" (^ )-Vorgang aus. |
operator|= |
Führt eine bitweise Kombination von Bitsets mit dem bitweisen Vorgang "oder" (| ) durch. |
operator~ |
Kehrt alle Bits in einem Ziel-bitset um, und gibt das Ergebnis zurück. |
Strukturen
Name | Beschreibung |
---|---|
hash |
all
Testet alle Bits in diesem Bitset, um festzustellen, ob sie alle auf "true" festgelegt sind.
bool all() const;
Rückgabewert
Gibt zurück true
, wenn alle Bits in diesem Satz wahr sind. Gibt zurück false
, wenn mindestens ein Bit falsch ist.
any
Überprüft, ob ein Bit in der Sequenz auf 1 gesetzt ist.
bool any() const;
Rückgabewert
true
wenn ein bit in dieser bitset
Eigenschaft auf 1 festgelegt ist; false
wenn alle Bits 0 sind.
Beispiel
// 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
Erstellt ein Objekt der Klasse bitset<N>
, und initialisiert die Bits mit 0 (null) oder mit einem angegebenen Wert oder mit Werten, die aus Zeichen einer Zeichenfolge ermittelt wurden.
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'));
Parameter
val
Die nicht signierte ganze Zahl, deren Basis zwei Darstellung verwendet wird, um die Bits im bitset
zu erstellenden Format zu initialisieren.
str
Die Zeichenfolge von Nullen und die Zeichenfolgen, die zum Initialisieren der bitset
Bitwerte verwendet werden.
pos
Die Position des Zeichens in der Zeichenfolge, das von links nach rechts gezählt wird und mit Null beginnt, das zum Initialisieren des ersten Bits in der bitset
Zeichenfolge verwendet wird.
count
Die Anzahl der Zeichen in der Zeichenfolge, die zum Bereitstellen von Anfangswerten für die Bits in der bitset
Zeichenfolge verwendet wird.
Zero
Das Zeichen, das verwendet wird, um eine 0 (null) darzustellen. Standardmäßig ist dies '0'.
One
Das Zeichen, das verwendet wird, um eine Eins darzustellen. Standardmäßig ist dies '1'.
Hinweise
1)
Erstellt ein Objekt der Klasse bitset<N>
und initialisiert alle N-Bits auf einen Standardwert von Null.
2-3)
Erstellt ein Objekt der Klasse bitset<N>
und initialisiert die Bits aus dem val
Parameter.
4)
Erstellt ein Objekt der Klasse bitset<N>
und initialisiert Bits aus den Zeichen, die in einer Zeichenfolge von Nullen und Zeichenfolgen angegeben sind. Wenn andere Zeichen als 0 oder 1 zeichen der Zeichenfolge sind, löst der Konstruktor ein Objekt der Klasse invalid argument
aus. Wenn die angegebene Position (pos
) über die Länge der Zeichenfolge hinaus liegt, löst der Konstruktor ein Objekt der Klasse out_of_range
aus. Der Konstruktor legt nur die Bits an Position j in der bitset
Zeichenfolge fest, für die das Zeichen in der Zeichenfolge an position pos + j
1 ist. Standardmäßig ist pos
0.
5)
Ähnlich wie 4)
ein anderer Parameter, count
der die Anzahl der zu initialisierenden Bits angibt. Es verfügt über zwei optionale Parameter und _Zero
_One
, die angeben, in welchem Zeichen str
ein 0 Bit bzw. ein 1 Bit interpretiert werden soll.
6)
Erstellt ein Objekt der Klasse bitset<N>
, initialisieren die N-Bits auf Werte, die den Zeichen in einer Zeichenfolge im C-Stil von Nullen und Zeichenfolgen entsprechen. Sie rufen den Konstruktor auf, ohne die Zeichenfolge in einen Zeichenfolgentyp zu umwandeln, z. B.: bitset<5> b5("01011");
Beispiel
// 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
Gibt die Anzahl der Bit-Sätze in der Bitsequenz an.
size_t count() const;
Rückgabewert
Die Anzahl der Bit-Sätze in der Bitsequenz.
Beispiel
// 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
Ein Typ, der gleichbedeutend mit dem Datentyp bool
ist und verwendet werden kann, um auf Elementbits in einem bitset
-Objekt zu verweisen.
typedef bool element_type;
Beispiel
// 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
Kehrt den Wert aller Bits in einem bitset
oder ein einzelnes Bit an einer angegebenen Position um.
bitset<N>& flip();
bitset<N>& flip(size_t pos);
Parameter
pos
Die Position des Bits, dessen Wert umgekehrt werden soll.
Rückgabewert
Eine Kopie der Geänderten bitset
, für die die Memberfunktion aufgerufen wurde.
Hinweise
Die zweite Memberfunktion löst eine out_of_range
Ausnahme aus, wenn die als Parameter angegebene Position größer als die Größe N
des bitset<N>
Bits ist, dessen Bit umgekehrt wurde.
Beispiel
// 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
Überprüft, ob keines der Bits in einem bitset
-Objekt auf 1 festgelegt wurde.
bool none() const;
Rückgabewert
true
wenn kein Bit auf bitset
1 festgelegt wurde; false
wenn mindestens ein Bit auf 1 festgelegt wurde.
Beispiel
// 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!=
Überprüft ein Zielbitset auf Ungleichheit mit einem angegebenen Bitset.
bool operator!=(const bitset<N>& right) const;
Parameter
right
Das bitset
soll mit dem Zielbitset für Ungleichheit verglichen werden.
Rückgabewert
true
wenn die Bitsets unterschiedlich sind; false
wenn sie identisch sind.
Hinweise
Bitsets müssen dieselbe Größe aufweisen.
Beispiel
// 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&=
Führt eine bitweise Kombination von Bitsets mit dem bitweisen "and" (&
) -Vorgang aus.
bitset<N>& operator&=(const bitset<N>& right);
Parameter
right
Das bitset
soll bitweise mit dem Zielbitset kombiniert werden.
Rückgabewert
Das geänderte Zielbitset, das aus dem bitweisen "and" (&
) -Vorgang mit dem bitset
angegebenen Parameter resultiert.
Hinweise
Zwei Bits, die vom AND
Operator kombiniert werden, werden zurückgegeben true
, wenn jedes Bit wahr ist; andernfalls wird die Kombination zurückgegeben false
.
Die beiden Bitsets müssen dieselbe Größe aufweisen.
Beispiel
// 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<<
Verschiebt die Bits in einem bitset
-Objekt um eine angegebene Anzahl von Positionen nach links und gibt das Ergebnis in einem neuen bitset
-Objekt zurück.
bitset<N> operator<<(size_t pos) const;
Parameter
pos
Die Anzahl der Positionen links, die die Bits im Bereich bitset
verschoben werden sollen.
Rückgabewert
Das geänderte Bitset mit den Bits, die um die erforderliche Anzahl von Positionen nach links verschoben wurden.
Hinweise
Die Memberoperatorfunktion gibt zurück bitset(*this) <<= pos
, wo <<=
die Bits in einer bitset
nach links angegebenen Anzahl von Positionen verschoben werden und das Ergebnis an das Ziel bitset
zurückgegeben wird.
Beispiel
// 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<<=
Verschiebt die Bits in einem bitset
-Objekt um eine angegebene Anzahl von Positionen nach links und gibt das Ergebnis im selben bitset
-Objekt zurück.
bitset<N>& operator<<=(size_t pos);
Parameter
pos
Die Anzahl der Positionen links, in denen die Bits verschoben bitset
werden sollen.
Rückgabewert
Die gezielte bitset
Änderung, sodass die Bits nach links verschoben wurden, die erforderliche Anzahl von Positionen.
Hinweise
Wenn kein Element vorhanden ist, das an die Position verschoben werden kann, löscht die Funktion das Bit auf einen Wert von 0.
Beispiel
// 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==
Überprüft ein Zielbitset auf Gleichheit mit einem angegebenen Bitset.
bool operator==(const bitset<N>& right) const;
Parameter
right
Das bitset
ist mit dem Zielbitset für die Gleichheit zu vergleichen.
Rückgabewert
true
wenn die Bitsets identisch sind; false
wenn sie anders sind.
Hinweise
Bitsets müssen dieselbe Größe aufweisen.
Beispiel
// 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>>
Verschiebt die Bits in einer bitset
nach rechts angegebenen Anzahl von Positionen und gibt das Ergebnis an eine neue Bitmenge zurück.
bitset<N> operator>>(size_t pos) const;
Parameter
pos
Die Anzahl der Positionen rechts, die die Bits in der bitset
Verschiebung sind.
Rückgabewert
Ein neues Bitset, bei dem die Bits nach rechts verschoben wurden, die erforderliche Anzahl von Positionen relativ zum Ziel bitset
.
Beispiel
// 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>>=
Verschiebt die Bits in einem bitset
-Objekt um eine angegebene Anzahl von Positionen nach rechts und gibt das Ergebnis im selben bitset
-Objekt zurück.
bitset<N>& operator>>=(size_t pos);
Parameter
pos
Die Anzahl der Positionen rechts, die die Bits in der bitset
Verschiebung sind.
Rückgabewert
Die gezielte bitset
Änderung, sodass die Bits nach rechts verschoben wurden, die erforderliche Anzahl von Positionen.
Hinweise
Wenn kein Element vorhanden ist, das an die Position verschoben werden kann, löscht die Funktion das Bit auf einen Wert von 0.
Beispiel
// 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[]
Gibt einen Verweis auf ein Bit an einer angegebenen Position eines bitset
-Objekts zurück, wenn das bitset
geändert werden kann. Gibt andernfalls den Wert zurück, den das Bit an dieser Position hat.
bool operator[](size_t pos) const;
reference operator[](size_t pos);
Parameter
pos
Die Position, die das Bit innerhalb der bitset
.
Hinweise
Wenn Sie in Ihrem Build als 1 oder 2 definieren _ITERATOR_DEBUG_LEVEL
, tritt in Ihrer ausführbaren Datei ein Laufzeitfehler auf, wenn Sie versuchen, auf ein Element außerhalb der Grenzen des bitset
Elements zuzugreifen. Weitere Informationen finden Sie unter Checked Iterators (Überprüfte Iteratoren).
Beispiel
// 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^=
Führt eine bitweise Kombination von Bitsets mit dem bitweisen "xor" (^
)-Vorgang aus.
bitset<N>& operator^=(const bitset<N>& right);
Parameter
right
Das bitset
soll bitweise mit dem Zielbitset kombiniert werden.
Rückgabewert
Das geänderte Zielbitset, das aus dem bitweisen "xor" (^
)-Vorgang mit dem bitset
angegebenen Parameter resultiert.
Hinweise
Zwei Bits kombiniert durch den bitweisen "xor"-Operator (^
) geben true
zurück, wenn mindestens eine, aber nicht beides der Bits sind true
; andernfalls wird ihre Kombination zurückgegeben false
.
Bitsets müssen dieselbe Größe aufweisen.
Beispiel
// 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|=
Kombiniert zwei Bitsets mithilfe des bitweisen "or" (|
)-Vorgangs.
bitset<N>& operator|=(const bitset<N>& right);
Parameter
right
Das bitset
soll bitweise mit dem Ziel bitset
kombiniert werden.
Rückgabewert
Das geänderte Zielbitset, das aus dem bitweisen "or" (|
) -Vorgang mit dem bitset
angegebenen Parameter resultiert.
Hinweise
Zwei Bits, die vom inklusiven OR
Operator kombiniert werden, werden zurückgegeben true
, wenn mindestens eines der Bits lautet true
; wenn beide Bits sind false
, gibt ihre Kombination zurück false
.
Bitsets müssen dieselbe Größe aufweisen.
Beispiel
// 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~
Kehrt alle Bits in einem Zielbitset um und gibt das Ergebnis zurück.
bitset<N> operator~() const;
Rückgabewert
Das bitset
mit all seinen Bits invertiert in Bezug auf das Ziel bitset
.
Beispiel
// 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
Eine Proxyklasse, die Verweise auf Bits bereitstellt, die in einem bitset
-Objekt enthalten sind, das als unterstützende Klasse für den operator[]
der bitset
-Klasse dazu verwendet wird, auf einzelne Bits zuzugreifen sowie einzelne Bits zu verarbeiten.
class reference {
friend class bitset<N>;
public:
reference& operator=(bool val);
reference& operator=(const reference& bitref);
bool operator~() const;
operator bool() const;
reference& flip();
};
Parameter
val
Der Wert des Typobjekts bool
, das einem Bit in einem bitset
Objekt zugewiesen werden soll.
bitref
Ein Verweis des Formulars x [ i ]
auf das Bit an der Position i
in bitset
x
.
Rückgabewert
Ein Verweis auf das Bit in der bitset
angegebenen Argumentposition für die ersten, zweiten und fünften Memberfunktionen des Klassenverweises und true
oder false
, um den Wert des geänderten Bits in der bitset
dritten und vierten Elementfunktion des Klassenverweises widerzuspiegeln.
Hinweise
Die Klasse reference
ist nur als Hilfsklasse für die bitset
operator[]
. Die Memberklasse beschreibt ein Objekt, das auf ein einzelnes Bit innerhalb eines Objekts bitset
zugreifen kann. Lassen Sie uns b
ein Objekt vom Typ bool
und y
x
Objekte des Typs bitset<N>
und i
gültige j
Positionen innerhalb eines solchen Objekts sein. Die Notation x [i]
verweist auf das Bit an der Position i
in Bitset x
. Die Memberfunktionen der Klasse reference
stellen in der genannten Reihenfolge die folgenden Vorgänge bereit:
Vorgang | Definition |
---|---|
x [i ] = b |
Speichert bool den Wert b an der Bitposition i in Bitmenge x . |
x [i ] = y [j ] |
Speichert den Wert des Bits y [ j ] an der Bitposition i in Bitmenge x . |
b = ~ x [i ] |
Speichert den gekippten Wert des Bits x [ i ] in bool b . |
b = x [i ] |
Speichert den Wert des Bits x [ i ] in bool b . |
x [i ]. flip ( ) |
Speichert den gekippten Wert des Bits x [ i ] zurück an der Bitposition i in x . |
Beispiel
// 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
Setzt alle Bits in einem bitset
-Objekt oder ein Bit an einer angegebenen Position auf 0 zurück.
bitset<N>& reset();
bitset<N>& reset(size_t pos);
Parameter
pos
Die Position des Bits, das bitset
auf 0 zurückgesetzt werden soll.
Rückgabewert
Eine Kopie der bitset
Elementfunktion, für die die Memberfunktion aufgerufen wurde.
Hinweise
Die zweite Memberfunktion löst eine out_of_range
Ausnahme aus, wenn die angegebene Position größer als die Größe der bitset
.
Beispiel
// 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
Legt alle Bits in einem bitset
-Objekt oder ein Bit an einer angegebenen Position auf 1 fest.
bitset<N>& set();
bitset<N>& set(
size_t pos,
bool val = true);
Parameter
pos
Die Position des Bits im bitset
zugewiesenen Wert.
val
Der Wert, der dem Bit an der angegebenen Position zugewiesen werden soll.
Rückgabewert
Eine Kopie der bitset
Elementfunktion, für die die Memberfunktion aufgerufen wurde.
Hinweise
Die zweite Memberfunktion löst eine out_of_range
Ausnahme aus, wenn die angegebene Position größer als die Größe der bitset
.
Beispiel
// 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
Gibt die Anzahl von Bits eines bitset
-Objekts zurück.
size_t size() const;
Rückgabewert
Die Anzahl der Bits, N
in einem bitset<N>
.
Beispiel
// 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
Überprüft, ob das Bit an einer angegebenen Position in einem bitset
-Objekt auf 1 festgelegt ist.
bool test(size_t pos) const;
Parameter
pos
Die Position des Bits im bitset
zu prüfenden Wert.
Rückgabewert
true
wenn das durch die Argumentposition angegebene Bit auf 1 festgelegt ist; andernfalls . false
Hinweise
Die Memberfunktion löst eine out_of_range
to_string
Konvertiert ein bitset
-Objekt in eine Zeichenfolgendarstellung.
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;
Rückgabewert
Ein Zeichenfolgenobjekt der Klasse basic_string
, wobei jeder Bitsatz in der bitset
Zeichenfolge ein entsprechendes Zeichen von 1 und ein Zeichen von 0 aufweist, wenn das Bit nicht festgelegt ist.
Beispiel
// 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
Gibt einen unsigned long long
Wert zurück, der dieselben Bits enthält, die wie der Inhalt des bitset
Objekts festgelegt sind.
unsigned long long to_ullong() const;
Rückgabewert
Gibt die Summe der Bitwerte zurück, die sich in der Bitsequenz als eine unsigned long long
. Dieser unsigned long long
Wert würde dieselben Satzbits erneut erstellen, wenn er zum Initialisieren eines bitset
.
Ausnahmen
Löst ein overflow_error
Objekt aus, wenn ein Bit in der Bitsequenz einen Bitwert aufweist, der nicht als Wert vom Typ unsigned long long
dargestellt werden kann.
Hinweise
Gibt die Summe der Bitwerte zurück, die sich in der Bitsequenz als eine unsigned long long
.
to_ulong
Konvertiert ein bitset
Objekt in die ganze Zahl, die die Sequenz der enthaltenen Bits generiert, wenn zum Initialisieren der bitset
.
unsigned long to_ulong( ) const;
Rückgabewert
Eine ganze Zahl, die die Bits in einer bitset
bei der Initialisierung der bitset
.
Hinweise
Das Anwenden der Memberfunktion würde die ganze Zahl zurückgeben, die dieselbe Abfolge von 1 und 0 Ziffern aufweist, wie in einer Sequenz von Bits, die in der bitset
Zeichenfolge enthalten sind.
Die Memberfunktion löst ein overflow_error
Objekt aus, wenn ein Bit in der Bitsequenz einen Bitwert aufweist, der nicht als Wert vom Typ unsigned long
dargestellt werden kann.
Beispiel
// 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.