Презентация на тему "Шаблоны классов"

Презентация: Шаблоны классов
1 из 47
Ваша оценка презентации
Оцените презентацию по шкале от 1 до 5 баллов
  • 1
  • 2
  • 3
  • 4
  • 5
4.0
1 оценка

Комментарии

Нет комментариев для данной презентации

Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.


Добавить свой комментарий

Аннотация к презентации

Скачать презентацию (0.2 Мб). Тема: "Шаблоны классов". Предмет: информатика. 47 слайдов. Для учеников 10-11 класса. Добавлена в 2017 году. Средняя оценка: 4.0 балла из 5.

Содержание

  • Презентация: Шаблоны классов
    Слайд 1

    11. Шаблоны классов

    1

  • Слайд 2

    11.1. Контейнеры

    Контейнер – хранилище некоторой совокупности данных Операции с контейнером не зависят от типа данных, размещенных в контейнере Пример: стек. Операции со стеком: положить в стек взять из стека 2

  • Слайд 3

    11.2. Простой шаблон класса

    // файл file.h template class Stack{ private: static const int SZ = 100; int top; MyTypearr[SZ]; 3

  • Слайд 4

    11.2. Простой шаблон класса(продолжение)

    public: Stack(); int push(const MyType &); int pop(MyType &); }; template Stack::Stack():top(0){} 4

  • Слайд 5

    template int Stack::push(const T &el) { if(top

  • Слайд 6

    template int Stack

    ::pop(P &el) { if(top > 0){ el = arr[--top]; return 1; } return 0; } 6

  • Слайд 7

    11.3. Использование шаблона класса

    // файл file.cpp #include “file.h” int main() { Stack st1, st2; st1.push(12); // в стеке число 12 st1.push(25); // в стеке число 25 st2 = st1; 7

  • Слайд 8

    11.3. Использование шаблона класса(продолжение)

    int x, y; st1.pop(x); // извлечение числа 25 st1.pop(y); // извлечение числа 12 cout

  • Слайд 9

    11.4. Вариант 1 шаблона класса

    // файл file.h template class Stack{ private: int top; MyTypearr[SZ]; 9

  • Слайд 10

    11.4. Вариант 1 шаблона класса(продолжение)

    public: Stack(); int push(const MyType &); int pop(MyType &); }; template Stack::Stack():top(0){} 10

  • Слайд 11

    template int Stack::push(const T &el) { if(top

  • Слайд 12

    template int Stack

    ::pop(P &el) { if(top > 0){ el = arr[--top]; return 1; } return 0; } 12

  • Слайд 13

    11.5. Использование шаблона класса

    // файл file.cpp #include “file.h” int main() { Stack st1; Stack st2; st1.push(12); // в стеке число 12 st1.push(25); // в стеке число 25 13

  • Слайд 14

    11.5. Использование шаблона класса(продолжение)

    int x, y; st1.pop(x); // извлечение числа 25 st1.pop(y); // извлечение числа 12 cout

  • Слайд 15

    11.6. Вариант 2 шаблона класса

    template class Stack{ private: int top; T *arr; intsz; public: Stack(int = 0); 15

  • Слайд 16

    11.6. Вариант 2 шаблона класса (продолжение)

    int push(const T &); int pop(T &); Stack(const Stack &); ~Stack(){delete [] arr; } Stack &operator =(const Stack &); }; 16

  • Слайд 17

    template int Stack::push(const T &el) { if(top

  • Слайд 18

    template int Stack

    ::pop(P &el) { if(top > 0){ el = arr[--top]; return 1; } return 0; } 18

  • Слайд 19

    template Stack::Stack(int n):top(0) { sz = n > 0 ? n : 10; arr = new T[sz]; } 19

  • Слайд 20

    template Stack::Stack(const Stack &s): top(s.top), sz(s.sz), arr(new T[s.sz]) { for(inti = 0; i

  • Слайд 21

    template Stack &Stack::operator =( const Stack &s) { if(this != &s){ delete [] arr; top = s.top; sz = s.sz; 21

  • Слайд 22

    arr = new T[sz]; for(inti = 0; i

  • Слайд 23

    11.7. Использование шаблона класса

    int main() { Stack st1, st2; st1.push(12); st1.push(25); st2 =st1; int x, y; st1.pop(x); 23

  • Слайд 24

    11.7. Использование шаблона класса(продолжение)

    st2.pop(y); cout

  • Слайд 25

    11.8. Контейнер: список

    structSLink { SLink *next; SLink(): next(NULL){ } SLink(SLink *p): next(p){ } }; 25  first next next next

  • Слайд 26

    11.8. Контейнер: список(продолжение)

    class BList{ protected: SLink *first; public: BList(): first(NULL){} BList(SLink *a): first(a){} void insert(SLink *); SLink *get(); friend class BListIter; }; 26

  • Слайд 27

    class BListIter { private: BList *cs; SLink *cl; public: BListIter(BList &a):cs(&a), cl(a.first){} SLink *operator()(); }; 27

  • Слайд 28

    SLink *BList::get() { SLink *res = first; if(first){ first = first->next; res->next = NULL; } return res; } 28 next next first res

  • Слайд 29

    void BList::insert(SLink *a) { a->next = first; first = a; a = NULL; } 29 next next a first next

  • Слайд 30

    SLink *BListIter::operator()() { SLink *ret = cl; cl = cl ? cl->next : cs->first; return ret; } 30

  • Слайд 31

    11.9. Контейнер: список – использование

    class StackInt:public SLink{ protected: intval; public: StackInt(int a = 0):val(a){} intgetVal() const {return val;} }; 31 next val

  • Слайд 32

    11.9. Контейнер: список – использование (продолжение)

    int main() { BListst; StackInt *p = NULL; st.insert(new StackInt(12)); st.insert(new StackInt(25)); st.insert(new StackInt(38)); 32

  • Слайд 33

    std::cout getVal()) ( st.get() );

  • Слайд 34

    std::cout (pl); std::cout getVal())

  • Слайд 35

    p = static_cast(st.get()); std::cout getVal())

  • Слайд 36

    36 item #3: 38 Iterator: 25 12 item #2: 25 Для продолжения нажмите любую клавишу . . .

  • Слайд 37

    11.10. Шаблон списка

    template structTLink: public SLink{ T info; TLink(const T &a):info(a){ } }; 37

  • Слайд 38

    11.10. Шаблон списка(продолжение)

    template class SListIter; template class SList:privateBList { friend class SListIter; public: void insert(const T &a); T get(); }; 38

  • Слайд 39

    template void SList::insert(const T &a) { BList::insert(new TLink(a)); } 39

  • Слайд 40

    template T SList::get() { T res; TLink *lnk = static_cast*>(BList::get()); 40

  • Слайд 41

    if(lnk){ res = lnk->info; delete lnk; } return res; } 41

  • Слайд 42

    template class SListIter:publicBListIter{ public: SListIter(SList &a): BListIter(a){ } T *operator()(); }; 42

  • Слайд 43

    template T *SListIter::operator()() { SLink *p = BListIter::operator()(); return p ? &(static_cast *>(p))->info : NULL; } 43

  • Слайд 44

    11.11. Использование шаблона списка

    int main() { SList st; st.insert(12); st.insert(25); st.insert(38); int res = st.get(); std::cout

  • Слайд 45

    11.11. Использование шаблона списка(продолжение)

    SListIter it(st); int *p = NULL; std::cout

  • Слайд 46

    std::cout

  • Слайд 47

    11.12. Структура программы

    47 Архивный файл mytempl

Посмотреть все слайды

Сообщить об ошибке