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 начиная с C++23) | |
Возвращает значение бита в позиции pos (отсчёт с 0).
В отличие от operator[] , он выполняет проверку границ.
Содержание |
Параметры
| pos | - | позиция возвращаемого бита (отсчет с 0) |
Возвращаемое значение
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)
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2250 | C++98 |
the behavior was undefined if
pos
does
not correspond to a valid bit position |
always throws an
exception in this case |
Смотрите также
|
доступ к определенному биту
(публичная функция-член) |
|
|
(C++20)
|
подсчитывает количество
1
битов в беззнаковом целом числе
(шаблон функции) |
|
(C++20)
|
проверяет, является ли число целой степенью
2
(шаблон функции) |