Пространства имён
Варианты
Действия

std::bitset<N>::test

Материал из cppreference.com
< cpp‎ | utility‎ | bitset
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
std::bitset
Типы элементы
Функции-элементы
Доступ к элементам
bitset::test
Ёмкость
Модификаторы
Преобразования
Функции, не являющиеся элементами
Вспомогательные классы
(C++11)
 
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)
подсчитывает количество единичных битов в беззнаковом целом числе
(шаблон функции) [править]
проверяет, является ли число целой степенью двойки
(шаблон функции) [править]