Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы все_001.doc
Скачиваний:
7
Добавлен:
25.09.2019
Размер:
238.59 Кб
Скачать

35. Алгоритмы.

Алгоритмы обрабатывают данные, содержащиеся в контейнерах. Несмотря на то, что каждый контейнер обеспечивает поддержку собственных базовых операций, стандартные алгоритмы позволяют выполнять более расширенные или более сложные действия. Они также позволяют работать с двумя различными типами контейнеров одновременно. Для получения доступа к алгоритмам библиотеки STL необходимо включить в программу заголовок <algorithm>.

В библиотеке STL определено множество алгоритмов. Все эти алгоритмы представляют собой шаблонные функции. Это означает, что их можно использовать к контейнеру любого типа.

36. Потоковые классы.

К классам потоков относятся следующие:

  • Класс basic_streambuf управляет буфером потока, обеспечивая базовые операции заполнения, опорожнения, сброса и прочих манипуляций с буфером.

  • Класс basic_ios является базовым классом потоков ввода-вывода.

  • Классы basic_ istream и basic_ostream — производные от ios и обеспечивают работу потоков соответственно ввода и вывода.

  • Класс basic_ iоstream является производным от двух предыдущих и предусматривает функции как для ввода, так и для вывода.

  • Классы basic_ ifstream, basic_ofstream и basic_fstream предназначены для управления файловым вводом-выводом.

Для работы с потоками требуется включить в программу заголовочный файл iostream.h. Кроме того, может потребоваться подключить файлы fstream.h (файловый ввод-вывод), iomanip.h (параметризованные манипуляторы).

37. Управление выводом. Манипуляторы и флажки.

Манипуляторы потоков являются по существу функциями, которые можно вызывать непосредственно в цепочке операций извлечения или передачи в поток. Различают простые и параметризованные манипуляторы. У простых манипуляторов аргументы отсутствуют. Параметризованные манипуляторы имеют аргумент. Можно создавать собственные манипуляторы.

Простые и параметризованные манипуляторы

Манипулятор

Описание

dec

Задает десятичную базу преобразования.

end1

Передает в поток символ новой строки и сбрасывает поток.

ends

Передает в поток символ завершающего строку нуля.

flush

Сбрасывает выходной поток.

hex

Задает шестнадцатеричную базу преобразования.

lock(ios Sir)

Блокирует дескриптор файла потока ir.

oct

Задает восьмеричную базу преобразования.

resetiosflags(int f)

Сбрасывает флаги, биты которых установлены в f.

setbase(int b)

Устанавливает базу преобразования (0, 8, 10 или 16).

setiosflags(int f)

Устанавливает флаги, биты которых установлены в f.

setfill(int c)

Задает символ заполнения (аналогичен функции

fiilO).

setprecision(long p)

Задает точность (аналогичен функции precision ()).

setw(iong w)

Задает ширину поля (аналогичен функции width ()).

lunlock(ios &ir)

Разблокирует дескриптор файла для потока ir.

ws

Исключает начальные пробельные символы.

 Флажки управления форматированием являются битовыми полями, хранящимися в переменной типа fmtflags (псевдоним int). Для их чтения и/или модификации могут применяться следующие функции-элементы класса ios:

  • int flags (), int flags (int). Без параметра возвращает текущее состояние флагов. При указанном параметре устанавливает новые значения флагов и возвращает их прежнее состояние.

  • int setf(int), long setf(int, int). Первая форма устанавливает флаги, биты которых установлены в параметре. Вторая форма модифицирует флаги, биты которых установлены во втором параметре. Значения этих флагов задаются первым параметром. Возвращает прежнее состояние всех флагов.

  • void unsetf(int). Сбрасывает флаги, биты которых установлены в параметре.

Форматирующие флаги класса ios

Флаг

Описание

internal

Если установлен, при выводе чисел знак выводится на левом краю поля вывода, а само число выравнивается по правому краю поля. Промежуток заполняется текущим символом заполнения.

dec

Устанавливает десятичное представление чисел. Принимается по умолчанию.

oct

Устанавливает восьмеричное представление чисел.

hex

Устанавливает шестнадцатеричное представление чисел.

showbase

Если установлен, то при восьмеричном и шестнадцатеричном представлении чисел выводит индикатор основания (0 для восьмеричных и Ох для шестнадцатеричных чисел).

showpoint

Если установлен, для вещественных чисел всегда выводится десятичная точка.

uppercase

Если установлен, шестнадцатеричные цифры от А до F, а также символ экспоненты Е выводятся в верхнем регистре.

boolalpfa

Если установлен, булевы значения выводятся как слова “true/false”. В противном случае они представляются соответственно единицей и нулем.

showpos

Выводит + для положительных чисел.

scientific

Если установлен, вещественные числа выводятся в научной (экспоненциальной) нотации.

fixed

Если установлен, вещественные числа выводятся в десятичном формате (с фиксированной точкой).

unitbuf

Если установлен, поток сбрасывается после каждой операции передачи.

Имена перечисленных выше флагов и других констант принадлежат к области действия класса ios. Вне этого класса нужно либо воспользоваться разрешением области действия (ios : : scientific), либо обращаться к ним, как к элементам существующего объекта (cout. scientific). Мы поедпочитаем первый способ.