Step 5 (S-11539)
Step on Stepik: https://stepik.org/lesson/563/step/5
[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 это будет соответствовать переменной которая была предана вот этот функционал