Класс bitset: набор битов фиксированного размера

Класс bitset реализует набор логических значений — например, флагов. Одно значение занимает один бит. В отличие от спецификации vector<bool>, набор имеет фиксированный размер, указываемый при объявлении объекта. Прежде чем использовать класс, необходимо в начало программы добавить инструкцию:

#include <bitset>

Создание объекта

Объявление класса bitset:

template<size_t N> class bitset;

Создать объект можно следующими способами (полный список конструкторов смотрите в документации):

  • объявить переменную без инициализации. Для этого перед названием переменной указывается название класса, а после названия внутри угловых скобок задается количество битов. Все биты автоматически получат значение 0. Пример объявления без инициализации:
std::bitset<8> arr;
std::cout << arr << std::endl; // 00000000
  • указать внутри круглых скобок целое число без знака:
std::bitset<8> arr(0xFF);
std::cout << arr << std::endl; // 11111111
  • указать внутри круглых скобок C-строку, состоящую из значений 0 и 1. Прототип конструктора:
template<typename CharT>
   explicit bitset(const CharT *str,
      typename std::basic_string<CharT>::size_type n
      = std::basic_string<CharT>::npos,
      CharT zero = CharT('0'), CharT one = CharT('1'));

Пример:

std::bitset<8> arr("11010101");
std::cout << arr << std::endl; // 11010101
  • указать внутри круглых скобок объект класса basic_string, после которого можно задать значения параметрам. Прототипы конструктора:
template<class CharT, class Traits, class Alloc>
   explicit bitset(const basic_string<CharT, Traits, Alloc> &str,
                   size_t pos=0);
template<class CharT, class Traits, class Alloc>
   bitset(const basic_string<CharT, Traits, Alloc> &str,
          size_t pos, size_t n);
template<class CharT, class Traits, class Alloc>
   bitset(const basic_string<CharT, Traits, Alloc> &str,
          size_t pos, size_t n,
          CharT zero, CharT one = CharT('1'));

Пример:

std::string str("11010101");
std::bitset<8> arr(str, 0, 8, '0', '1');
std::cout << arr << std::endl; // 11010101

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов