23 General utilities library [utilities]

23.9 Bitsets [bitset]

23.9.2 Class template bitset [template.bitset]

23.9.2.1 bitset constructors [bitset.cons]

constexpr bitset() noexcept;

Effects: Создает объект класса bitset<N>, инициализируя все биты нулями.

constexpr bitset(unsigned long long val) noexcept;

Effects: Создает объект класса bitset<N>, инициализируя первые M битовые позиции соответствующими битовыми значениями в val. M является меньшим из N и число битов в value representation о unsigned long long. Если M < N, оставшиеся битовые позиции инициализируются нулем.

template <class charT, class traits, class Allocator> explicit bitset(const basic_string<charT, traits, Allocator>& str, typename basic_string<charT, traits, Allocator>::size_type pos = 0, typename basic_string<charT, traits, Allocator>::size_type n = basic_string<charT, traits, Allocator>::npos, charT zero = charT('0'), charT one = charT('1'));

Throws: out_­of_­range если pos > str.size() или invalid_­argument если обнаружен недопустимый символ (см. ниже).

Effects: Определяет эффективную длину rlen инициализирующей строки как меньшее из значений n и str.size() - pos.

Затем функция выдает, invalid_­argument если какой-либо из rlen символов в str начале позиции pos отличается от zero или one. Функция используется traits​::​eq() для сравнения значений символов.

В противном случае функция создает объект класса bitset<N>, инициализируя первые M битовые позиции значениями, определенными из соответствующих символов в строке str. M является меньшим из N и rlen.

Элемент построенного объекта имеет нулевое значение, если соответствующий символ в str, начиная с позиции pos, имеет значение zero. В противном случае элемент имеет значение один. Позиция символа pos + M - 1 соответствует нулевой позиции бита. Последующие уменьшающиеся позиции символов соответствуют увеличивающимся позициям битов.

Если M < N, оставшиеся битовые позиции инициализируются нулем.

template <class charT> explicit bitset( const charT* str, typename basic_string<charT>::size_type n = basic_string<charT>::npos, charT zero = charT('0'), charT one = charT('1'));

Effects: Создает объект класса, bitset<N> как если бы:

bitset(
  n == basic_string<charT>::npos
    ? basic_string<charT>(str)
    : basic_string<charT>(str, n),
  0, n, zero, one)