На этом шаге мы перечислим операции создания, копирования и уничтожения, принадлежащие классу bitset.
Начиная с этого шага, мы перечислим операции, поддерживаемые классом bitset.
Для битовых полей определено несколько специальных конструкторов. С другой стороны, для них не определены специальный копирующий конструктор, оператор присваивания и деструктор. Это означает, что присваивание и копирование битовых полей производится стандартными операциями поразрядного копирования.
bitset<paзмер>::bitset ()
bitset<50> flags; // Флаги: 0000...000000 - всего 50 нулевых битов
bitset<размер>::bitset (unsigned long value)
bitset<50> flags(7); // Флаги: 0000...000111
explicit bitset<размер>::bitset (const string& str) bitset<размер>::bitset (const string& str, string::size_type str_idx) bitset<размер>::bitset (const string& str, string::size_type str_idx, string::size_type str_num)
Строка или подстрока может содержать только символы "0" и "1".
Параметр str_idx определяет индекс первого символа str, используемого для инициализации.
Если параметр str_num не задан, используются все символы от позиции str_idx до конца строки.
Если количество символов в строке или подстроке меньше необходимого, начальные биты инициализируются нулями.
Если количество символов в строке или подстроке больше необходимого, лишние символы игнорируются.
Если выполняется условие str_idx>str.size(), генерируется исключение out_of_range.
Если хотя бы один символ отличен от "0" и "1", генерируется исключение invalid_argument.
Обратите внимание: конструктор объявлен в виде шаблонной функции класса, из-за чего отсутствует неявное преобразование типа первого параметра из const char* в string.
bitset<50> flags(string("1010101")); // Флаги: 0000...0001010101 bitset<50> fiags(string("1111000")); // Флаги: 0000...0001111000
На следующем шаге мы рассмотрим немодифицирующие операции.