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

Презентация: Шаблоны. Стандартная библиотека шаблонов
Включить эффекты
1 из 19
Ваша оценка презентации
Оцените презентацию по шкале от 1 до 5 баллов
  • 1
  • 2
  • 3
  • 4
  • 5
4.0
1 оценка

Комментарии

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

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


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

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

Посмотреть презентацию на тему "Шаблоны. Стандартная библиотека шаблонов" для студентов в режиме онлайн с анимацией. Содержит 19 слайдов. Самый большой каталог качественных презентаций по информатике в рунете. Если не понравится материал, просто поставьте плохую оценку.

Содержание

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

    Шаблоны. Стандартная библиотека шаблонов

    Лекция 4

  • Слайд 2

    Понятие шаблона

    Шаблон (template)– средство программирования, которое позволяет создавать функции и классы, в которых тип задается в качестве параметра. В шаблоне функции определяется алгоритм, который может применяться к данным разных типов, а конкретный тип данных передается функции в виде параметра на этапе компиляции. Компилятор автоматически генерирует правильный код, соответствующий переданному типу. Шаблоны классов обычно используются, когда класс предназначен для хранения специальным образом организованных данных и работы с ними.

  • Слайд 3

    Шаблоны функций

    В простейшем случае функция-шаблон определяется так: template тип_фимя_ф(параметры) { /* тело функции */} Type – это имя фиктивного типа. Компилятор автоматически заменит его именем реального типа данных при создании конкретной версии функции. Вместо слова classможет использоваться typename. В угловых скобках указываются параметры шаблона через запятую. Их может быть несколько. Параметр может быть не только типом, но и просто переменной: template void F() {…}

  • Слайд 4

    Пример функции-шаблона

    #include usingnamespacestd; template void Myswap(T &x, T &y) { T a=x; x=y; y=a; } int main() { int i=10, j=20; char s1='a', s2='b'; Myswap(i, j); cout

  • Слайд 5

    Шаблоны и перегруженные функции

    Функции-шаблоны похожи на перегружаемые функции, но являются более ограниченными, т.к. всегда выполняют один и тот же алгоритм для различных типов данных. При необходимости функцию-шаблон можно перегрузить явным образом. При явной перегрузке компилятор не создает автоматическую версию функции для параметров указанных типов. Вывод: если алгоритм обработки для разных типов одинаков, используют функции-шаблоны. Если нет – перегруженные функции.

  • Слайд 6

    Пример использования шаблона и перегруженной функции

    #include usingnamespacestd; #include template T Summa(T x, T y) { T S; S=x+y; return S; } char * Summa(char *s1, char *s2) { strcat(s1, s2); return s1;} int main() { float i=3.2, j=2.7; char s1[80]="Hello "; char s2[]="World!"; cout

  • Слайд 7

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

    Синтаксис шаблона класса: template class имя_класса { /* описание класса*/}; Параметры перечисляются через запятую. Параметрами могут быть типы (сlass Ttype), шаблоны и переменные. Если метод описывается вне шаблона, его заголовок должен иметь вид: template возвр_типимя_класса:: имя_функции (список_параметров_функции) Создание экземпляра класса: имя_класса объект[(параметры_конструктора)]; Аргументы – значения с которым будет работать класс.

  • Слайд 8

    Пример класса-шаблона

    template classMyClass{ T1 i; T2 j; public: MyClass(T1 a, T2 b) {i=a; j=b;} void Show(); }; template voidMyClass ::Show() {cout ob1(22, 3.5); MyClass ob2("text1", "text2"); ob1.Show(); ob2.Show(); return 0; }

  • Слайд 9

    Библиотека стандартных шаблонов

    Стандартная библиотека С++ (Standart Template Library, STL) содержит шаблоны для хранения и обработки данных. Основные элементы библиотеки: контейнеры; итераторы; алгоритмы; функциональные объекты.

  • Слайд 10

    Контейнеры

    Контейнеры – это объекты, предназначенные для хранения других однотипных объектов. Могут содержать простые объекты (целые, вещественные, символьные и т.д.), структурные данные (массивы, строки, структуры), объекты классов. Эти объекты должны допускать копирование и присваивание. В контейнерах можно хранить сами объекты или указатели на них. В каждом классе-контейнере определен набор функций для работы с этим контейнером. Для использования контейнера в программе необходимо включить в нее соответствующий заголовочный файл.

  • Слайд 11

    Классификация контейнеров

    Последовательные контейнеры обеспечивают хранение конечного количества однотипных объектов в виде непрерывной последовательности. К базовым последовательным контейнерам относятся векторы (vector), списки (list) и двусторонние очереди (deque). Специализированные контейнеры (или адаптеры контейнеров) реализованы на основе базовых. Это стеки (stack), очереди (queue) и очереди с приоритетами (priority_queue. Ассоциативные контейнеры обеспечивают быстрый доступ к данным по ключу. Эти контейнеры построены на основе сбалансированных деревьев. Есть пять типов ассоциативных контейнеров: словари (map), словари с дубликатами(multimap), множества (set), множества с дубликатами (multiset) и битовые множества (bitset). 11

  • Слайд 12

    Контейнеры, определенные в STL

  • Слайд 13

    Итераторы

    Итераторы – это объекты, которые по отношению к контейнерам играют роль указателей. Для всех контейнерных классов STL определен тип iterator, но его реализация в разных классах разная. Поэтому при объявлении объектов типа iterator всегда указывается область видимости: vector :: iterator i; list :: iterator j; 13

  • Слайд 14

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

    Разыменование итератора: если р — итератор, то *р — значение объекта, на которыйон ссылается. Присваивание одного итератора другому. Сравнение итераторов на равенство и неравенство (== и !=). Перемещение его по всем элементам контейнера с помощью префиксного(++р) или постфиксного (р++) инкремента. 14

  • Слайд 15

    Просмотр элементов контейнера

    Если i — некоторый итератор, то используется следующая форма цикла: for (i = first ; i != last; ++i) first— значение итератора, указывающее на первый элемент в контейнере. last— значение итератора, указывающее на воображаемый элемент, которыйследует за последним элементом контейнера. Операция сравнения для итераторов в общем случаене поддерживаются. Для всех контейнерных классов определены унифицированные методы begin() и end(), возвращающие адреса first и last соответственно. 15

  • Слайд 16

    Способы создания объекта-последовательного контейнера

    1. Создать пустой контейнер: vector vec1; list list1; 2. Создать контейнер заданного размера и инициализировать его элементы значениямипо умолчанию: vector vec1(100); list list1(20); 3. Создать контейнер заданного размера и инициализировать его элементы указаннымзначением: vector vec1(100, "Hello!"); deque decl(300, -1); 16

  • Слайд 17

    4. Создать контейнер и инициализировать его элементы значениями диапазона[first, last) элементов другого контейнера: intarr[7] = {15, 2, 19,-3,28, 6,8}; vector v1(arr, arr+ 7); list lst(v1.beg() + 2, vl.end()); 5. Создать контейнер и инициализировать его элементы значениями элементовдругого однотипного контейнера: vector v1; // добавить в vlэлементы vector v2(vl); 17

  • Слайд 18

    Алгоритмы

    Алгоритм – это функция, которая выполняет некоторые действия над содержимым контейнера. Чтобы использовать обобщенные алгоритмы нужно к программе подключить заголовочный файл . В списках параметров всех алгоритмов первые два параметра задают диапазонобрабатываемых элементов в виде полуинтервала [ first , last), где first— итератор,указывающий на начало диапазона, last— итератор, указывающий навыход за границы диапазона. 18

  • Слайд 19

    Пример использования векторов

    #include #include #include using namespace std; int main() { double arr[] = {5.1, 2.2, 1.3, 4.4 }; intn = sizeof(arr)/sizeof(double); vector v1(arr, arr + n); // Инициализация вектора массивом vector v2; // пустой вектор vector::iterator i; for (i = v1.begin(); i != v1.end(); ++i) cout

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

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