
polevoi_cpp_2013_spring_lecture_05
.pdf
.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 |