Namespaces
Variants

std::bitset<N>:: operator[]

From cppreference.net
Utilities library
bool operator [ ] ( std:: size_t pos ) const ;
(1) (constexpr seit C++11)
reference operator [ ] ( std:: size_t pos ) ;
(2) (constexpr seit C++23)

Greift auf das Bit an Position pos zu.

1) Gibt den Wert des Bits zurück.
2) Gibt ein Objekt vom Typ std::bitset::reference zurück, das die Modifikation des Werts ermöglicht.

Wenn pos < size ( ) false ist, ist das Verhalten undefiniert.

(bis C++26)

Wenn pos < size ( ) false ist:

  • Wenn die Implementierung gehärtet ist, tritt eine Vertragsverletzung auf. Wenn der Vertragsverletzungs-Handler unter "observe"-Auswertungssemantik zurückkehrt, ist das Verhalten zudem undefiniert.
  • Wenn die Implementierung nicht gehärtet ist, ist das Verhalten undefiniert.
(seit C++26)

Inhaltsverzeichnis

Parameter

pos - Position des zurückzugebenden Bits

Rückgabewert

1) Der Wert des angeforderten Bits.
2) Ein Objekt vom Typ std::bitset::reference , das das Schreiben auf das angeforderte Bit ermöglicht.

Ausnahmen

Wirft nichts.

Beispiel

#include <bitset>
#include <cstddef>
#include <iostream>
int main()
{
    std::bitset<8> b1{0b00101010}; // Binärliteral für 42
    for (std::size_t i = 0; i < b1.size(); ++i)
        std::cout << "b1[" << i << "]: " << b1[i] << '\n';
    b1[0] = true; // modifiziert das erste Bit über bitset::reference
    std::cout << "Nach dem Setzen von Bit 0 enthält b1 " << b1 << '\n';
}

Ausgabe:

b1[0]: 0
b1[1]: 1
b1[2]: 0
b1[3]: 1
b1[4]: 0
b1[5]: 1
b1[6]: 0
b1[7]: 0
After setting bit 0, b1 holds 00101011

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 11 C++98 1. die Beschreibung fehlte im C++-Standard
2. es gab nur die nicht-konstante Überladung
1. Beschreibung hinzugefügt
2. konstante Überladung hinzugefügt
LWG 907 C++98 das Verhalten beim Lesen des Bits an pos war äquivalent
zu dem von test(pos) , aber test() könnte Ausnahmen werfen
vermeidet die Erwähnung von test()

Siehe auch

greift auf spezifisches Bit zu
(öffentliche Elementfunktion)