Namespaces
Variants

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

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

Accede al bit en la posición pos .

1) Devuelve el valor del bit.
2) Devuelve un objeto de tipo std::bitset::reference que permite modificar el valor.

Si pos < size ( ) es false , el comportamiento es indefinido.

(hasta C++26)

Si pos < size ( ) es false :

  • Si la implementación está hardened , ocurre una contract violation . Además, si el manejador de violación de contrato retorna bajo semántica de evaluación "observe", el comportamiento es indefinido.
  • Si la implementación no está hardened, el comportamiento es indefinido.
(desde C++26)

Contenidos

Parámetros

pos - posición del bit a devolver

Valor de retorno

1) El valor del bit solicitado.
2) Un objeto de tipo std::bitset::reference , que permite escribir en el bit solicitado.

Excepciones

No lanza nada.

Ejemplo

#include <bitset>
#include <cstddef>
#include <iostream>
int main()
{
    std::bitset<8> b1{0b00101010}; // literal binario para 42
    for (std::size_t i = 0; i < b1.size(); ++i)
        std::cout << "b1[" << i << "]: " << b1[i] << '\n';
    b1[0] = true; // modifica el primer bit mediante bitset::reference
    std::cout << "Después de establecer el bit 0, b1 contiene " << b1 << '\n';
}

Salida:

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

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 11 C++98 1. la descripción faltaba en el estándar de C++
2. solo existía la sobrecarga no constante
1. descripción añadida
2. añadida la sobrecarga constante
LWG 907 C++98 el comportamiento de leer el bit en pos era equivalente
al de test(pos) , pero test() puede lanzar excepciones
evita mencionar test()

Véase también

accede a un bit específico
(función miembro pública)