std::bitset
|
La plantilla de clase <bitset>
|
||
template< std::size_t N >
class bitset;
|
||
representa una secuencia de tamaño fijo de bitset bits. Los conjuntos de bits pueden manipularse mediante operadores lógicos estándar y convertirse a y desde cadenas y enteros. A efectos de la representación de cadenas y de nombrar las direcciones para las operaciones de desplazamiento, la secuencia se considera que tiene sus elementos de índice más bajo en la Nderecha, como en la representación binaria de enteros.
cumple los requisitos de
bitsetCopyConstructible y CopyAssignable.
Todas las funciones miembro de
|
son |
Parámetros de plantilla
| N | - | el número de bits para asignar almacenamiento |
Tipos de miembros
|
clase proxy que representa una referencia a un bit
(clase) |
Funciones miembro
|
construye el bitset
(función miembro pública) |
|
|
(eliminado en C++20)
|
compara los contenidos
(función miembro pública) |
Acceso a elementos |
|
|
accede a un bit específico
(función miembro pública) |
|
|
accede a un bit específico
(función miembro pública) |
|
|
verifica si todos, alguno o ninguno de los bits están establecidos a
true
(función miembro pública) |
|
|
retorna el número de bits establecidos a
true
(función miembro pública) |
|
Capacidad |
|
|
retorna el número de bits que contiene el bitset
(función miembro pública) |
|
Modificadores |
|
|
realiza operaciones binarias AND, OR, XOR y NOT
(función miembro pública) |
|
|
realiza desplazamiento binario a izquierda y derecha
(función miembro pública) |
|
|
establece bits a
true
o a un valor dado
(función miembro pública) |
|
|
establece bits a
false
(función miembro pública) |
|
|
alterna los valores de los bits
(función miembro pública) |
|
Conversiones |
|
|
retorna una representación en cadena de los datos
(función miembro pública) |
|
|
retorna una representación entera
unsigned
long
de los datos
(función miembro pública) |
|
|
(C++11)
|
retorna una representación entera
unsigned
long
long
de los datos
(función miembro pública) |
Funciones no miembro
|
realiza operaciones lógicas binarias en bitsets
(plantilla de función) |
|
|
realiza entrada y salida de flujo de bitsets
(plantilla de función) |
Clases auxiliares
|
(C++11)
|
soporte de hash para
std::bitset
(especialización de plantilla de clase) |
Notas
Si el tamaño de un conjunto de bits no se conoce en tiempo de compilación, o es necesario cambiar su tamaño en tiempo de ejecución, se pueden utilizar tipos dinámicos como
std::vector<bool>
o
boost::dynamic_bitset<>
en su lugar.
| Macro de prueba de características | Valor | Estándar | Característica |
|---|---|---|---|
__cpp_lib_constexpr_bitset
|
202207L
|
(C++23) |
Un
std::bitset
más constexpr
|
__cpp_lib_bitset
|
202306L
|
(C++26) |
Interconexión de
std::bitset
con
std::string_view
|
Ejemplo
#include <bitset> #include <cassert> #include <cstddef> #include <iostream> int main() { typedef std::size_t length_t, position_t; // las pistas // constructores: constexpr std::bitset<4> b1; constexpr std::bitset<4> b2{0xA}; // == 0B1010 std::bitset<4> b3{"0011"}; // también puede ser constexpr desde C++23 std::bitset<8> b4{"ABBA", length_t(4), /*0:*/'A', /*1:*/'B'}; // == 0B0000'0110 // los bitsets pueden imprimirse en un flujo: std::cout << "b1:" << b1 << "; b2:" << b2 << "; b3:" << b3 << "; b4:" << b4 << '\n'; // bitset soporta operaciones bit a bit: b3 |= 0b0100; assert(b3 == 0b0111); b3 &= 0b0011; assert(b3 == 0b0011); b3 ^= std::bitset<4>{0b1100}; assert(b3 == 0b1111); // operaciones sobre el conjunto completo: b3.reset(); assert(b3 == 0); b3.set(); assert(b3 == 0b1111); assert(b3.all() && b3.any() && !b3.none()); b3.flip(); assert(b3 == 0); // operaciones sobre bits individuales: 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); // se soporta el operador de subíndice []: b3[2] = true; assert(true == b3[2]); // otras operaciones: assert(b3.count() == 1); assert(b3.size() == 4); assert(b3.to_ullong() == 0b0100ULL); assert(b3.to_string() == "0100"); }
Salida:
b1:0000; b2:1010; b3:0011; b4:00000110
Véase también
|
bitset dinámico eficiente en espacio
(especialización de plantilla de clase) |
|
| Manipulación de bits (C++20) | utilidades para acceder, manipular y procesar bits individuales y secuencias de bits |