Шаблоны классов. Создание шаблонов. Использование шаблонов класса

Динамические структуры данных.

типы динамических структур:

- линейные списки

- очереди

- стеки

- бинарные деревья

узел – элемент динамической структуры

class Node

{Type d;

Node *p};

Линейные списки.

однонаправленный список – ссылки (связь) только на следующие элементы

двусвязный список – ссылки (связь) на следующие и на предыдущие элементы

кольцевой список – последний элемент связан с первым

Операции над списками:

- начальное формирование (создание первого элемента)

- добавление элемента в конец списка

- чтение элемента с заданным ключом

- вставка элемента в заданное место списка (до или после элемента с заданным ключом)

- удаление элемента с заданным ключом

- упорядочивание списка по ключу

Шаблоны (параметризованные классы) – позволяют создавать семейства родственных классов, которые можно применять к любому типу данных и передавать этот тип в качестве параметра класса

template <параметр шаблона> определение класса

Правила описании шаблонов:

- локальные (вложенные в шаблон) классы не могут содержать шаблоны в качестве своих аргументов

- шаблоны классов могут содержать статические элементы, дружественные функции и классы

- шаблоны могут быть производными, как от шаблонов, так и от классов, и являться базовыми для них

- внутри шаблона нельзя определять дружественные шаблоны

имя_шаблона <аргументы> имя_объекта [(параметры_конструктора)]

List <int> list1;

List <double> list2;

list1.add(2);

list2.print;

32)Общий механизм обработки исключений в С++. Генерация и перехват исключений. Список исключений функции.

Исключительная ситуация – это возникновение непредвиденного или аварийного события, которое может порождаться некорректным использованием аппаратуры.

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

Вычислительный процесс

Шаблоны классов. Создание шаблонов. Использование шаблонов класса - student2.ru

обнаружение обработка

аварийной аварийной

ситуации ситуации

Механизм обработки исключений: Шаблоны классов. Создание шаблонов. Использование шаблонов класса - student2.ru Стек – область памяти, выделяемая системой для программы, в которой хранятся параметры, локальные переменные функций и адреса возврата в функцию

Стек вызова – последовательность вызванных, но еще не завершившихся функций

Раскручивание стека – процесс освобождения памяти из-под локальных переменных и возврата управления вызывающей функции

Синтаксис исключения:

try

{код, который может генерировать исключение}

throw [выражение];

catch (тип имя) {тело обработчика}

catch (тип) {тело обработчика}

catch (…) {тело обработчика}

Перехват исключений.

Действия библиотеки С++ в случае генерации исключения:

1)создается копия параметра throw в виде статического объекта, который существует до тех пор, пока исключение не обработано

2)в поисках подходящего обработчика раскручивается стек; вызываются деструкторы локальных объектов, выходящих из области

3)объект исключения передается обработчику, имеющему параметр, совместимый по типу

Обработчик считается найденным, если тип объекта указанного после throw:

- тот же, что и в catch

- является производным от указанного в catch

- является указателем, который может быть преобразован по стандартным правилам к указанным в catch

Список исключений:

void f1() throw(int, char*)

{тело функции}

void f2() throw()

{тело функции не порождающий исключений}

Исключения в конструкторах:

class Vector

{public:

const int max=200;

Vector(int n)

{if(n<0 || n>max) throw “invalide size”;

…}…};

try

{… Vector *p=new Vector(400);…}

catch(char*) {}

33)Пространства имен. Состав стандартной библиотеки С++.

Пространство имен (поименованные области) служат для логического группирования объявлений и ограничения доступа к ним.

namespace [имя_области] {/*объявления*/}

namespace demo

{int i=1; int k=0;

void func(int);

void func2(int) {/*…*/}}

void demo::func(int) {/*…*/}

demo::i=100;

demo::func2(10);

using demo::i; //после можно испольжовать напрямую

using namespace demo;

Стандартная библиотека С++:

- функции, макросы и константы, унаследованные из библиотеки Си.

- классы, шаблоны и другие средства С++

группы классов:

- потоковые (управление потоками данных между оперативной памятью и внешними устройствами)

- строковые (работа с символьными строками)

- контейнерные (реализуют наиболее распространенные структуры для хранения данных)

- итераторы (унифицированный доступ к элементам контейнерных и других классов)

- математические (эффективная обработка массивов с плавающей точкой и работа с комплексными числами)

Стандартная библиотека шаблонов – совокупность контейнерных классов и итераторов.

34)Потоковые классы стандартной библиотеки С++.

извлечение – извлечение данных из потока

помещение – вывод в поток

По направлению обмена:

- входные

- выходные

- двунаправленные

По виду устройств, с которыми работает поток:

- стандартные

- файловые

- строковые

Иерархия потоковых классов:

ios streambuf

Шаблоны классов. Создание шаблонов. Использование шаблонов класса - student2.ru

istream ostream

Шаблоны классов. Создание шаблонов. Использование шаблонов класса - student2.ru

iostream

Стандартные потоки.

istream cin; ввод (клавиатура)

ostream cout; вывод (экран)

ostream cerr; сообщения об ошибке

ostream clog; диагностическое сообщение

В классах istream и ostream определены операции извлечения из потока (<<) и помещение в поток (>>).

- числовые значения можно вводить в десятичной или шестнадцатеричной системе счисления

- вещественное число вводится с точкой или с порядком

- при вводе строк извлечение происходит до ближайшего пробела

- значение указателей выводится в шестнадцатеричной системе счисления

Методы обмена:

get – возвращает код извлеченного из потока символа

getline – считает из потока строку, плюс пробельные символы

read – считывает определенное количество байтов

seekg – устанавливает текущую позицию чтения

put – выводит в поток символ

write – записывает в поток необходимое количество байтов

Наши рекомендации