bitset | Набор b содержит n битов, каждый из которых содержит значение 0. Это конструктор constexpr (см. раздел 7.5.6) |
bitset | Набор b содержит копию n младших битов значения u типа unsigned long long . Если значение n больше размера типа unsigned long long , остальные старшие биты устанавливаются на нуль. Это конструктор constexpr (см. раздел 7.5.6) |
bitset | Набор b содержит копию m символов из строки s , начиная с позиции pos . Строка s может содержать только символы для нулей и единиц; если строка s содержит любой другой символ, передается исключение invalid_argument . Символы хранятся в наборе b как нули и единицы соответственно. По умолчанию параметр pos имеет значение 0, параметр m — string::npos , zero — '0' и one — '1' |
bitset | Подобен предыдущему конструктору, но копируется символьный массив, на который указывает cp . Если значение m не предоставлено, cp должен указывать на строку в стиле С. Если m предоставлено, то начиная с позиции cp в массиве должно быть по крайней мере m символов, соответствующих нулям или единицам |
Конструкторы, получающие строку или символьный указатель, являются явными (см. раздел 7.5.4). В новом стандарте была добавлена возможность определять альтернативные символы для 0 и 1. |
---|
При использовании для инициализации набора битов целочисленного значения оно преобразуется в тип unsigned long long
и рассматривается как битовая схема. Биты в наборе битов являются копией этой схемы. Если размер набора битов превосходит количество битов в типе unsigned long long
, то остальные старшие биты устанавливаются в нуль. Если размер набора битов меньше количества битов, то будут использованы только младшие биты предоставленного значения, а старшие биты вне размера объекта набора битов отбрасываются:
//
//
bitset<13> bitvec1(0xbeef); //
//
//
bitset<20> bitvec2(0xbeef); //
//
//
bitset<128> bitvec3(~0ULL); //
Набор битов можно инициализировать из строки или указателя на элемент в символьном массиве. В любом случае символы непосредственно представляют битовую схему. Как обычно, при использовании строки для представления числа символы с самыми низкими индексами в строке соответствуют старшим битам, и наоборот:
bitset<32> bitvec4("1100"); // биты 2 и 3 - единицы, остальные - 0
Если строка содержит меньше символов, чем битов в наборе, старшие биты устанавливаются в нуль.
Необязательно использовать всю строку в качестве исходного значения для набора битов, вполне можно использовать часть строки:
string str("1111111000000011001101");