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

35.Алгоритмы

Алгоритмы предназначены для работы с контейнерами и другими последовательностями. Каждый алгоритм реализован в виде шаблона или набора шаблонов функции, поэтому может работать с различными видами последовательностей и данными разнообразных типов. Для настройки алгоритма на конкретные требования пользователя применяються функциональные объекты. Использование стандартных алгоритмов, как и других средств стандартной библиотеки, избавляет программиста от написания, отладки и документирования циклов обработки последователностей, что уменьшает количество ошибок в программе снижает время её разработки и делает её более читаемой и компактной. Объявление стандартных алгоритмов находятся в заголовочном файле <algorithm>,стандартных функциональных объектов-в файле <functional>. Все алгоритмы можно разделить на 4 категории: немодифицирующие операции с последовательностями;модефицирующие операции с последовательностями; алгоритмы, связанные с сортировкой; алгоритмы работы с можествами и пирамидоми; Кроме того, библиотека содержит обобщённые численные алгоритмы, объявление которых находиться в файле <numeric>. Вкачестве параметров алгоритму передаються итераторы, определяющие начало и конец обрабатываетмой последовательности. Вид итераторов определяет типы контейнеров, для которых можит использоваться данный алгоритм. In – итератор для чтения, Out- итератор для записи, For- прямой итератор, Bi- двунаправленный итератор, Ran- итератор произвольного доступа, Comp-функция сравнения, Op-унарная операция, BinOp-бинарная операция.

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

Библиотека потоковых классов С++ построена на основе двух базовых классов: ios и streambuf.

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

Класс ios содержит средства для форматированного ввода-вывода и проверки ошибок.

Стандартные потоки (istream, ostream, iostream) служат для работы с терминалом. Строковые потоки (istrstream, ostrstream, strstream) служат для ввода-вывода из строковых буферов, размещенных в памяти. Файловые потоки (ifstream, ofstream, fstream) служат для работы с файлами:

ios -базовый потоковый класс; streambuf -буферизация потоков;istream -потоки ввода; ostream -потоки вывода;

Для ввода с потока используются объекты класса istream, для вывода в поток - объекты класса ostream.

В классе istream определены следующие функции:

-istream& get(char *buffer, int size, char delimiter = '\n'); Эта функция извлекает символы из istream и копирует их в буфер. Операция прекращается при достижении конца файла, либо когда скопированы size символов, либо при обнаружении указанного разделителя. Сам разделитель не копируется и остается в streambuf. Последовательность прочитанных символов всегда завершается нулевым символом.

-istream& read(char *buffer, int size); Не поддерживает разделителей, и считанные в буфер символы не завершаются нулевым символом.

-istream& getline(char *buffer, int size, char delimiter = '\n'); Разделитель извлекается из потока, но в буфер не заносится. Это основная функция для извлечения строк из потока. Считанные символы завершаются нулевым символом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]