Содержание
- 2. Универсальным алгоритмом будем называть алгоритм, не привязанный к определенному типу входных и выходных данных, т.е. одинаково
- 3. void bubble_sort(int data[], int n) { ... } void bubble_sort(float data[], int n) { ... }
- 4. Решение 1: псевдоним типа (typedef) typedef T int; T summa(T array[], int size) { T res
- 5. Универсальный алгоритм в С++ может быть реализован с помощью шаблона функции. Определение шаблона похоже на определение
- 6. Синтаксис определения Определение шаблона функции template тип имя_функции(список_аргументов) { операторы; }; В теле шаблона функции могут
- 7. template T summa(T array[], int size) { T res = 0; for (int i=0; i res
- 8. При вызове функции-шаблона, после ее имени указывают фактические параметры шаблона в угловых скобках, а затем фактические
- 9. Шаблоны можно параметризовать не только именами типов, но и объектами, поэтому аргумент size можно указать в
- 10. Параметрами шаблона могут быть − параметр-тип (имя типа – int, float, string и т.д.) − параметр-шаблон
- 11. Параметром-переменной в шаблоне не может быть: − void − пользовательский тип − вещественный тип (float, double)
- 12. Шаблон в языке С++ реализует принципы параметрического полиморфизма, то есть возможности применять один и тот же
- 13. Если к какому-либо конкретному типу аргументов шаблонный алгоритм неприменим, то можно определить обычную функцию, список типов
- 14. Иногда при вызове шаблона функции после имени можно не указывать фактические параметры в угловых скобках. В
- 15. При выведении типов могут применяться только преобразования точного отождествления, то есть: Преобразование типов T[] T* T
- 16. Пример преобразования типов template T max(T t1, T t2){...} int main() { max(1,2); // max (1,2);
- 17. Устранение неоднозначности max (’a’,1); max (2.5,4); Неоднозначности не возникают при использовании явного квалификатора типа шаблона
- 18. Универсальным контейнером будем называть программную структуру, которая может использоваться для хранения данных разных типов. Такие контейнеры
- 19. Синтаксис объявления Объявление шаблона класса template class имя_класса { поля и методы; }; В объявлении класса-шаблона
- 20. Создание объекта шаблонного класса называется инстанцированием шаблона. Синтаксис инстанцирования Создание объекта имя_класса объект;
- 21. Пример: пара чисел template class pair { private: T1 data1; T2 data2; public: pair(T1 d1, T2
- 22. pair c1(5, ’S’); pair c2(0.39, false); c1.print(); c2.print(); Примеры инстанцирования шаблона класса pair Для корректного функционирования
- 23. Пример 2: шаблон массива Задача: создать шаблон класса array, позволяющего хранить данные любого типа. Предусмотреть следующие
- 24. #include #include template class array { public: array(); ~array(); T& operator[](int k); private: T *data; };
- 25. template array ::array() { data = new T[n]; } template array ::~array() { delete []data; }
- 26. template T& array ::operator[](int k) { if( k =n ) throw std::out_of_range("Out!"); return data[k]; } template
- 28. Скачать презентацию