std::bitset<N>:: test
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member types | ||||
| Member functions | ||||
|
(until C++20)
|
||||
| Element access | ||||
|
bitset::test
|
||||
| Capacity | ||||
| Modifiers | ||||
| Conversions | ||||
|
(C++11)
|
||||
| Non-member functions | ||||
| Helper classes | ||||
|
(C++11)
|
||||
|
bool
test
(
std::
size_t
pos
)
const
;
|
(constexpr desde C++23) | |
Devuelve el valor del bit en la posición pos (contando desde 0).
A diferencia de operator[] , realiza una verificación de límites.
Contenidos |
Parámetros
| pos | - | posición del bit a retornar (contando desde 0) |
Valor de retorno
true si el bit solicitado está establecido, false en caso contrario.
Excepciones
Lanza std::out_of_range si pos no corresponde a una posición de bit válida.
Ejemplo
#include <bit> #include <bitset> #include <cassert> #include <iostream> #include <stdexcept> int main() { std::bitset<10> b1("1111010000"); std::size_t idx = 0; while (idx < b1.size() && !b1.test(idx)) ++idx; assert(static_cast<int>(idx) == std::countr_zero(b1.to_ulong())); if (idx < b1.size()) std::cout << "El primer bit establecido está en el índice " << idx << '\n'; else std::cout << "no hay bits establecidos\n"; try { std::bitset<0B10'1001'1010> bad; if (bad.test(bad.size())) std::cout << "¡Espera lo inesperado!\n"; } catch (std::out_of_range const& ex) { std::cout << "Excepción: " << ex.what() << '\n'; } }
Salida posible:
El primer bit establecido está en el índice 4 Excepción: bitset::test: __position (which is 666) >= _Nb (which is 666)
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2250 | C++98 |
el comportamiento era indefinido si
pos
no
corresponde a una posición de bit válida |
siempre lanza una
excepción en este caso |
Véase también
|
accede a un bit específico
(función miembro pública) |
|
|
(C++20)
|
cuenta el número de bits
1
en un entero sin signo
(plantilla de función) |
|
(C++20)
|
verifica si un número es una potencia entera de
2
(plantilla de función) |