std::bitset<N>:: test
From cppreference.net
C++
Utilities library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::bitset
| 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
;
|
(C++23부터 constexpr) | |
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 << "The first set bit is 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'; } }
가능한 출력:
The first set bit is at index 4 Exception: bitset::test: __position (which is 666) >= _Nb (which is 666)
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2250 | C++98 |
pos
가 유효한 비트 위치에
해당하지 않을 경우 동작이 정의되지 않음 |
이 경우 항상
예외를 throw함 |
참고 항목
|
특정 비트에 접근
(public member function) |
|
|
(C++20)
|
부호 없는 정수에서
1
비트의 개수를 셈
(function template) |
|
(C++20)
|
숫자가 2의 정수 거듭제곱인지 확인
(function template) |