Namespaces
Variants

std::bitset<N>:: test

From cppreference.net
Utilities library
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)
숫자가 2의 정수 거듭제곱인지 확인
(function template)