Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

polevoi_cpp_2013_spring_lecture_05

.pdf
Скачиваний:
12
Добавлен:
20.04.2015
Размер:
121 Кб
Скачать
☆

.h не должен содержать

•определения обычных функций

•определения данных

•определения агрегатов

•неименованные пространства имен

30.03.2013

21

Использование заголовочных файлов в проектах

•включайте все необходимое

•минимизируйте число включений

•включайте заголовочные файлы в порядке увеличения общности

–локальные

–общеупотребительные

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

•разделяйте группы заголовков

30.03.2013

22

Бинарный интерфейс компонент

•соглашение о параметрах вызова

•Си-соглашение

extern “C”

{

// source code

}

30.03.2013

23

АТД “cтек”

•динамическая структура данных

•упорядоченный набор элементов

•LIFO (Last In First Out) – добавление и удаление элементов с одного конца,

называемого вершиной стека

30.03.2013

24

Стек

вершина push

getTop

pop

isEmpty

30.03.2013

25

Стек - операции

•создание

•уничтожение

•добавление элемента

•удаление элемента

•получение значение верхнего элемента

30.03.2013

26

Стек – интерфейс

•create()

•destroy()

•bool isEmpty()

•push(T)

•pop()

•T getTop()

30.03.2013

27

Стек (интерфейс)

пример: struct Stack;

void create(Stack& stack); void destroy(Stack& stack);

bool isEmpty(const Stack& stack)

void push(Stack& stack, const T& val) void pop(Stack& stack);

const T& getTop(const Stack& stack)

30.03.2013

28

Стек – реализация

•динамически массив

•линейный список

30.03.2013

29

Стек (динамический массив)

вершина

const T& getTop(const St& s)

{

size_t i(size(s.arr) - 1); assert(i >= 0);

return at(s.arr, i);

}

30.03.2013

30