Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 [ 143 ] 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239

Отметьте необходимость явного преобразования исходного значения к типу string. Вероятно, это объясняется ошибкой в стандарте, поскольку в ранних версиях стандарта допускалось использование конструкций вида bitsetd("10001010H"). При преобразовании конструктора в шаблон для разных строковых типов этот механизм автоматического преобразования типа был случайно утрачен. В настоящее время рассматривается предложение по исправлению этой ошибки.

Обратите внимание: количество битов в битовом поле должно быть меньще sizeof(unsigned long). Если значение битового поля не может быть представлено в виде unsigned long, генерируется исключение.

Строение класса bitset

Ниже перечислены операции, поддерживаемые классом bitset

Операции создания, копирования и уничтожения

Для битовых полей определено несколько специальных конструкторов. С другой стороны, для них не определены специальный копирующий конструктор, оператор присваивания и деструктор. Это означает, что присваивание и копирование битовых полей производится стандартными операциями поразрядного копирования.

bit5et<pa3wep>::bitset ()

О Конструктор по умолчанию

О Создает битовое поле, в котором все биты инициализированы нулями. О Пример:

bitset<50> flags; Флаги: 0000...000000

Всего 50 нулевых битов

bit5et<p(3jwep>;:bitset (unsigned long value)

О Создает битовое поле и инициализирует его битами целочисленного значения value.

О Если количество битов в value слишком мало, недостающие начальные биты инициализируются нулями.

О Пример:

bit5et<50> flags(7); Флаги: 0000..,000111

explicit bitset<pajMep>::bit5et (const 5tring& str) bitset<размер>: :bitset (const string str. string: :size type strjdx) bit5et<pdJMep>::bitset (const string, str. strmg: :5ize type strjdx.

stry/?g:: size type str num)

О Все формы возвращают битовое поле, инициализировщшос строкой 5г.или входящей в нее подстрокой.



Вероятно, это объясняется ошибкой в стандарте, поскольку в ранних версиях стандарта допускалось использование конструкций вида bitset2 flags("1010101"). При преобразовании конструктора в шаблон для разных строковых типов этот механизм автоматического преобразования типа был случайн утрачен. В настоящее время рассматривается предложение по исправлению этой ошибки.

О Строка или подстрока может содержать только символы «О» и «1».

О Параметр str idx определяет индекс первого символа str, используемого дяя инициализации.

О Если параметр str num не задан, используются все символы от позиции strjdx до конца строки.

О Если количество символов в строке или подстроке меньше необходимого, начальные биты инициализируются нулями.

О Если количество символов в строке или подстроке больше необходимого, лишние символы игнорируются.

О Если выполняется условие str idx>str.size(), генерируется исключение out of range.

О Если хотя бы один символ отличен от «О» и «1», генерируется исключение invalid argument.

О Обратите внимание: конструктор объявлен в виде шаблонной функции класса (см. с. 28), из-за чего отсутствует неявное преобразование типа первого параметра из const char* в string.

О Пример:

bit5et<50> flagsCstringClOlOlOl"")): Флаги: 0000.. .0001010101 bitset<50> flags(stringC"1111000")): Флаги: 0000...0000000110

Немодифицирующие операции

size t bit5et<pajwep>::slze С) const

Возвращает количество битов (то есть размер). size t bitset<pa3Mep>::count С) const

Возвращает количество установленных битов (то есть битов со значением 1). bool bitset<pdjMep>::апу () const

Проверяет наличие хотя бы одного установленного бита, bool b1tset<p<?jwep>: :попе О const

Проверяет отсутствие хотя бы одного установленного бита, bool bitset<pajwep>::test (size t idx) const О Проверяет установку бита в позиции idx.

О Если выполняется условие idx>=size(), генерируется исключение out of range.



bool b1tset<p(3jwep>:;operator== (const bitset<pdJwep>& bits) const

Проверяет совпадение всех битов *this и bits. bool bitset<pa3wep>::operator!= (const bitset<pdjwep>& bits) const

Проверяет наличие несовпадающих битов в *this и bits.

Модифицирующие операции

bitset<pa3wep>& bitset<pa3j4ep>::set ()

О Устанавливает все биты.

О Возвращает модифицированное битовое поле.

bitset<pa3wep>& bitset<pa3j4ep>: :set (size t idx)

О Устанавливает бит в позиции idx.

О Возвращает модифицированное битовое поле.

О Если выполняется условие idx>=size(), генерируется исключение out of range. bitset<pd3wep>& bitset<pd3wep>::set (size t idx. int value)

О Задает значение бита в позиции idx в соответствии с value. О Возвращает модифицированное битовое поле.

О Значение value интерпретируется как логическая величина. Если аргумент value равен О, бит сбрасывается, а при любом другом значении бит устанавливается.

О Если выполняется условие idx>=size(), генерируется исключение out of range.

bitset<pd3wep>& bitset<pa5j4ep>:: reset О

О Сбрасывает все биты (то есть присваивает им 0). О Возвращает модифицированное битовое поле.

bitset<размер>& bitset<pa3wep>.:reset (size t idx)

О Сбрасывает бит в позиции idx.

О Возвращает модифицированное битовое поле.

О Если выполняется условие idx>=size(), генерируется исключение out of range.

bitset<a3tfep>& bitset<pd3wep>::flip О

О Переводит все биты в противоположное состояние (установленные биты сбрасываются, и наоборот).

О Возвращает модифицированное битовое поле.

bitset<размер>& bitset<pa5wep>::flip (size t idx)

О Переводит бит в позиции idx в противоположное состояние. О Возвращает модифицированное битовое поле.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 [ 143 ] 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239