Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




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

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

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

- очереди

- стеки

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

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

class Node

{Type d;

Node *p};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

List <int> list1;

List <double> list2;

list1.add(2);

list2.print;

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

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

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

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

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

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

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

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

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

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

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

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

istream ostream

iostream

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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





Поделиться с друзьями:


Дата добавления: 2016-03-27; Мы поможем в написании ваших работ!; просмотров: 626 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если президенты не могут делать этого со своими женами, они делают это со своими странами © Иосиф Бродский
==> читать все изречения...

2507 - | 2380 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.