std:: bitset
|
Definiert in Header
<bitset>
|
||
|
template
<
std::
size_t
N
>
class bitset ; |
||
Die Klassenvorlage
bitset
repräsentiert eine feste Sequenz von
N
Bits. Bitsets können mit standardmäßigen logischen Operatoren manipuliert und in Zeichenketten und Ganzzahlen konvertiert werden. Für die Zwecke der Zeichenketten-Darstellung und der Benennung von Richtungen für Schiebeoperationen wird die Sequenz so betrachtet, dass sich ihre niedrigstindizierten Elemente
rechts
befinden, wie in der binären Darstellung von Ganzzahlen.
bitset
erfüllt die Anforderungen von
CopyConstructible
und
CopyAssignable
.
|
Alle Memberfunktionen von
|
(seit C++23) |
Inhaltsverzeichnis |
Template-Parameter
| N | - | die Anzahl der Bits, für die Speicherplatz reserviert werden soll |
Mitgliedertypen
|
Proxy-Klasse, die eine Referenz auf ein Bit repräsentiert
(Klasse) |
Memberfunktionen
|
Konstruiert das Bitset
(öffentliche Elementfunktion) |
|
|
(entfernt in C++20)
|
vergleicht die Inhalte
(öffentliche Elementfunktion) |
Elementzugriff |
|
|
greift auf bestimmtes Bit zu
(öffentliche Elementfunktion) |
|
|
greift auf bestimmtes Bit zu
(öffentliche Elementfunktion) |
|
|
prüft ob alle, mindestens eines oder keine Bits auf
true
gesetzt sind
(öffentliche Elementfunktion) |
|
|
gibt die Anzahl der auf
true
gesetzten Bits zurück
(öffentliche Elementfunktion) |
|
Kapazität |
|
|
gibt die Anzahl der Bits zurück, die das Bitset enthält
(öffentliche Elementfunktion) |
|
Modifikatoren |
|
|
führt binäres AND, OR, XOR und NOT aus
(öffentliche Elementfunktion) |
|
|
führt binäre Links- und Rechtsschiebeoperationen aus
(öffentliche Elementfunktion) |
|
|
setzt Bits auf
true
oder gegebenen Wert
(öffentliche Elementfunktion) |
|
|
setzt Bits auf
false
(öffentliche Elementfunktion) |
|
|
wechselt die Werte der Bits
(öffentliche Elementfunktion) |
|
Konvertierungen |
|
|
gibt eine String-Darstellung der Daten zurück
(öffentliche Elementfunktion) |
|
|
gibt eine
unsigned
long
Integer-Darstellung der Daten zurück
(öffentliche Elementfunktion) |
|
|
(C++11)
|
gibt eine
unsigned
long
long
Integer-Darstellung der Daten zurück
(öffentliche Elementfunktion) |
Nicht-Member-Funktionen
|
führt binäre logische Operationen auf Bitsets aus
(Funktions-Template) |
|
|
führt Strom-Ein- und Ausgabe von Bitsets durch
(Funktions-Template) |
Hilfsklassen
|
(C++11)
|
Hash-Unterstützung für
std::bitset
(Klassen-Template-Spezialisierung) |
Hinweise
Wenn die Größe eines Bit-Sets zur Kompilierzeit nicht bekannt ist oder es notwendig ist, seine Größe zur Laufzeit zu ändern, können dynamische Typen wie
std::vector<bool>
oder
boost::dynamic_bitset<>
stattdessen verwendet werden.
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_constexpr_bitset
|
202207L
|
(C++23) |
Ein stärker constexpr
std::bitset
|
__cpp_lib_bitset
|
202306L
|
(C++26) |
Schnittstelle für
std::bitset
mit
std::string_view
|
Beispiel
#include <bitset> #include <cassert> #include <cstddef> #include <iostream> int main() { typedef std::size_t length_t, position_t; // die Hinweise // Konstruktoren: constexpr std::bitset<4> b1; constexpr std::bitset<4> b2{0xA}; // == 0B1010 std::bitset<4> b3{"0011"}; // kann auch constexpr seit C++23 sein std::bitset<8> b4{"ABBA", length_t(4), /*0:*/'A', /*1:*/'B'}; // == 0B0000'0110 // Bitsets können in einen Stream ausgegeben werden: std::cout << "b1:" << b1 << "; b2:" << b2 << "; b3:" << b3 << "; b4:" << b4 << '\n'; // Bitset unterstützt bitweise Operationen: b3 |= 0b0100; assert(b3 == 0b0111); b3 &= 0b0011; assert(b3 == 0b0011); b3 ^= std::bitset<4>{0b1100}; assert(b3 == 0b1111); // Operationen auf der gesamten Menge: b3.reset(); assert(b3 == 0); b3.set(); assert(b3 == 0b1111); assert(b3.all() && b3.any() && !b3.none()); b3.flip(); assert(b3 == 0); // Operationen auf einzelnen Bits: b3.set(position_t(1), true); assert(b3 == 0b0010); b3.set(position_t(1), false); assert(b3 == 0); b3.flip(position_t(2)); assert(b3 == 0b0100); b3.reset(position_t(2)); assert(b3 == 0); // Indexoperator [] wird unterstützt: b3[2] = true; assert(true == b3[2]); // andere Operationen: assert(b3.count() == 1); assert(b3.size() == 4); assert(b3.to_ullong() == 0b0100ULL); assert(b3.to_string() == "0100"); }
Ausgabe:
b1:0000; b2:1010; b3:0011; b4:00000110
Siehe auch
|
platzsparende dynamische Bitmenge
(Klassen-Template-Spezialisierung) |
|
| Bit manipulation (C++20) | Hilfsmittel zum Zugriff, zur Manipulation und Verarbeitung einzelner Bits und Bitsequenzen |