Оператор вывода выводит битовую схему объекта bitset
:
bitset<16> bits;
cin >> bits; //
cout << "bits: " << bits << endl; //
Для иллюстрации применения наборов битов повторно реализуем код оценки из раздела 4.8, использовавший тип unsigned long
для представления результатов контрольных вопросов (сдал/не сдал) для 30 учеников:
bool status;
//
unsigned long quizA = 0; //
//
quizA |= 1UL << 27; //
status = quizA & (1UL << 27); //
quizA &= ~(1UL << 27); //
//
bitset<30> quizB; //
//
quizB.set(27); //
status = quizB[27]; //
quizB.reset(27); // ученик номер 27 не сдал
Упражнение 17.10. Используя последовательность 1, 2, 3, 5, 8, 13, 21, инициализируйте набор битов, у которого установлена 1 в каждой позиции, соответствующей числу в этой последовательности. Инициализируйте по умолчанию другой набор битов и напишите небольшую программу для установки каждого из соответствующих битов.
Упражнение 17.11. Определите структуру данных, которая содержит целочисленный объект, позволяющий отследить (сдал/не сдал) ответы на контрольную из 10 вопросов. Какие изменения (если они вообще понадобятся) необходимо внести в структуру данных, если в контрольной станет 100 вопросов?
Упражнение 17.12. Используя структуру данных из предыдущего вопроса, напишите функцию, получающую номер вопроса и значение, означающее правильный/неправильный ответ, и изменяющую результаты контрольной соответственно.
Упражнение 17.13. Создайте целочисленный объект, содержащий правильные ответы (да/нет) на вопросы контрольной. Используйте его для создания оценок контрольных вопросов для структуры данных из предыдущих двух упражнений.
17.3. Регулярные выражения
regex
и задействует несколько компонентов, перечисленных в табл. 17.4.
Таблица 17.4. Компоненты библиотеки регулярных выражений
regex | Класс, представляющий регулярное выражение |
regex_match() | Сравнивает последовательность символов с регулярным выражением |
regex_search() | Находит первую последовательность, соответствующую регулярному выражению |
regex_replace() | Заменяет регулярное выражение, используя заданный формат |
sregex_iterator | Адаптер итератора, вызывающий функцию regex_search() для перебора совпадений в строке |
smatch | Класс контейнера, содержащего результаты поиска в строке |
ssub_match | Результаты совпадения выражений в строке |
Класс regex
представляет регулярное выражение. Кроме инициализации и присвоения, с классом regex
допустимо немного операций. Они перечислены в табл. 17.6.