Step 4 (S-11549)

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

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

Step on Stepik: https://stepik.org/lesson/567/step/4

<img width="50%" src="https://ucarecdn.com/109cdf96-dcd2-4eec-95e0-0815d9c1558c/">

[00:00 - 00:15] давайте разберемся с тем случаям когда параметром шаблона является шаблон и давайте разберем это очень примерно пусть нас определена некоторая функция которая принимает значение типа


[00:15 - 00:30] то есть данная функция принимает некоторые целочисленное значение и возвращает соответствующее ему строковое представление то есть срока представления числа использую данное фото можно написать более сложную функцию которая будет принимать


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


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


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


[01:22 - 01:38] присвоено значение элементом массива строчку ну как бы возвращает результат такая реализация довольно естественно но синтаксически она описана для какого то конкретного шаблона вопросам 8 то есть


[01:38 - 01:55] сама функционирует и шаблоны но она работает только с 1 шаблоном она работает только с шаблоном эры если бы мы захотели что данная функция работала с кем то другими шаблонами контейнеров например со списком или с вектором там или еще чем то нам придется


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


[02:12 - 02:28] удовлетворять соответствующим требованиям что мы ожидаем от контейнера мы ожидаем от контейнера что у него будет этот гет используя метод get мы используем метод ссались и мы также используем


[02:28 - 02:45] конструктор от размера контейнера если какого то другого контейнера также есть метод get метод size и конструктор от размера то почему бы не примерить эту функцию то strings таким образом чтобы она работала и для этого компе при этом


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


[03:01 - 03:20] мы определяем шаблонную функцию параметром шаблона который будет шаблон это описывать это длинно значит шаблоны параметрам эта функция этот шаблон от 1 аргумента и это именно шаблон класс


[03:20 - 03:39] то есть данную функцию можно будет вызвать для какого то шаблона класс от 1 аргумента которому в качестве аргумента передан int 10 это да тут записывать то есть параметрам данная функция является константная ссылка назначения


[03:39 - 03:58] типа контейнера цена может быть поставлена речь лист от электро ты что нибудь еще то в качестве возвращаемого значения в данной функции указан соответствующий контейнер но уже от встреч то есть если бы мы хотели возвращать контейнер того же типа


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


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


[04:33 - 04:50] felice на реализацию дальнейшую функцию она будет точно такая же как и реализация этой функции для конкретного шаблона класса то есть мы создаем контейнер для


[04:50 - 05:05] результата при помощи конструктора от size мы используем конструктор и метод секс дальше в цикле прибегаем все используя метод get индексу мы инициализируем


[05:05 - 05:20] значение которых хранятся в массиве для результат и после этого дальше то есть реализации она соответствует этой же реализации но для конкретного типа школ много раз


[05:20 - 05:36] однако разница в том что 1 реализации работал бы только для массива типа а реализации с шаблоном чтобы набор этом она будет работать с любым шаблоном контейнер у которого есть


[05:36 - 05:42] конструктор вот size у которого есть метод size и метод