bool test( std::size_t pos ) const; | (until C++23) | |
constexpr bool test( std::size_t pos ) const; | (since C++23) |
Returns the value of the bit at the position pos
(counting from 0).
Unlike operator[]
, performs a bounds check and throws std::out_of_range
if pos
does not correspond to a valid position in the bitset.
pos | - | position of the bit to return (counting from 0) |
true
if the requested bit is set, false
otherwise.
std::out_of_range
if pos
does not correspond to a valid position within the bitset.
#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 << "first set bit at index " << idx << '\n'; else std::cout << "no set bits\n"; try { std::bitset<0B10'1001'1010> bad; if (bad.test(bad.size())) std::cout << "Expect unexpected!\n"; } catch (std::out_of_range const& ex) { std::cout << "Exception: " << ex.what() << '\n'; } }
Possible output:
first set bit at index 4 Exception: bitset::test: __position (which is 666) >= _Nb (which is 666)
accesses specific bit (public member function) |
|
(C++20) | counts the number of 1 bits in an unsigned integer (function template) |
(C++20) | checks if a number is an integral power of two (function template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/bitset/test