std::bitset<N>::test
Материал из cppreference.com
<tbody>
</tbody>
bool test( std::size_t pos ) const; |
(constexpr начиная с C++23) | |
Возвращает значение бита в позиции pos (начиная с 0).
В отличии от operator[], выполняет проверку выхода за границы и вызывает исключение std::out_of_range, если pos является некорректной позицией в наборе битов.
Параметры
| pos | — | позиция бита, значение которого нужно возвратить |
Возвращаемое значение
true, если запрошенный бит установлен, иначе false.
Исключение
std::out_of_range, если pos не соответствует действительной позиции в наборе битов.
Пример
Запустить этот код
#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 << "первый установленный бит находится по индексу " << idx << '\n';
} else {
std::cout << "нет установленных битов\n";
}
try
{
std::bitset<0B10'1001'1010> bad;
if (bad.test(bad.size()))
std::cout << "Ожидайте неожиданного!\n";
}
catch (std::out_of_range const& ex)
{
std::cout << "Исключение: " << ex.what() << '\n';
}
}
Вывод:
первый установленный бит находится по индексу 4
Исключение: bitset::test: __position (which is 666) >= _Nb (which is 666)
Смотрите также
| обращается к определённому биту (public функция-элемент) | |
(C++20) |
подсчитывает количество единичных битов в беззнаковом целом числе (шаблон функции) |
(C++20) |
проверяет, является ли число целой степенью двойки (шаблон функции) |