Spec-Zone.ru › C++

std::bitset<N>::test

bool test( std::size_t pos ) const;
(constexpr со C++23)

Возвращает значение бита в позиции pos (считая с 0).

В отличие от operator[], выполняет проверку границ и выбрасывает std::out_of_range если pos не соответствует допустимой позиции в битовом наборе.

Параметры

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)

См. также

operator[]
доступ к определенному биту
(публичный член-функция)
popcount
(C++20)
подсчитывает количество 1 битов в беззнаковом целом числе
(шаблон функции)
has_single_bit
(C++20)
проверяет, является ли число целой степенью 2
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/bitset/test

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API