Step 5 (S-11539)

From Stepik Wiki
Revision as of 08:15, 21 March 2017 by Admin (Talk | contribs) (Create page for step id=11539)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/563/step/5

<img width="50%" src="https://ucarecdn.com/b6947ddb-cd64-489d-b315-89015c787802/">

[00:00 - 00:17] шаблоны классов могут иметь несколько аргументов давайте немножко посложнее шаблон класс добавить туда дополнительные параметры шаблон класса 1 параметр будет такой же это


[00:17 - 00:34] 2 аргумент это тип который хранит размер массива ну может быть какие то предложения нам потребуется массив размера которых хранится не писать а в тебе short


[00:34 - 00:51] таким образом я добавляю 1 аргумент чтобы можно было повлиять на тип размер массива и везде где использовалась в составе в смысле размер массива я заменяю соответствующее имя


[00:51 - 01:08] аргументы шаблон в качестве 3 аргумента шаблона я указываю тип который возвращается из константного оператор квадратные скобки и поставьте на плиту через сайт и там и с константным оператора квадратные скобки возвращается


[01:08 - 01:27] элемент массива по значит это вполне нормально для встроенных типов которые небольших если в массиве хранятся некоторые большие тип объекта класса для которых копирования это дорого то такой возвращения по значению это дорогая операция


[01:27 - 01:45] при возвращении элемент массива по значению будет происходить копирование если мы хотим избирать то надо заменить тип возвращаемого элемента с значение на константу добавлять такой аргумент


[01:45 - 02:02] шаблон мы позволяем повлиять на это то есть для встроенных типов там будет использоваться по умолчанию значение по значению а для больших объектов можно будет заменить на константу аргументы шаблон могут иметь значение по умолчанию данном случае


[02:02 - 02:19] 2 аргумента будет значение по умолчанию а 3 аргумента будет просто тип хранителями как теперь это использовать если я просто напишу эры то это будет соответствовать эры от int


[02:19 - 02:37] со ст 1 параметр указан а оставшийся начаться помолчали аналогично если я захочу определить массив который конечно это большой объект например массив который хранит массивы


[02:37 - 02:52] значит что назначая то тогда я могу сказать все 3 параметра шаблона как это сделано здесь то есть тип элемента который хранится в этом о себе это будет в которых они размер массива это будет совсем


[02:52 - 03:12] несмысленыш менять и тип элемента который будет возвращаться из константного оператор квадратных скобки это будет уже не эры а константная ссылка на этот таким образом мы оптимизируем оператору квадратные скобки и у нас там не будет происходить в дорогом копировать


[03:12 - 03:29] как видите имя типа этого массива она здесь достаточно длинные она не является ни в 1 строчку и это стандартная проблема при использовании шаблона так как в имени типа в указывайте имена других типов то имена типов на это очень длинно для того чтобы


[03:29 - 03:48] улучшить читабельность кода используется синонимы для типов синоним типа это ключевое слово в данном случае определяется синоним для типа р от int синоним то есть где я буду использовать слово into тобой потренироваться


[03:48 - 04:04] аналогично потом можно использовать этот синоним для определения более сложного типа но вот этот тип int он соответствует тому типу который я определил где то есть этом массив


[04:04 - 04:21] элементами которой являются массивы винтов и в качестве возвращаемого типа в квадратные скобки константой версии будут возвращаться константная ссылка на массив интов то есть вот этот тип int он соответствует


[04:21 - 04:40] тип у которой был определен запись дальше тем основанием можно использовать в любых местах потребляется именно типов то есть можно определить переменную типа int это будет соответствовать переменной которая была предана вот этот функционал