Difference between revisions of "Step 6 (S-11551)"

From Stepik Wiki
Jump to: navigation, search
(Create page for step id=11551)
 
 
Line 1: Line 1:
 
Step on Stepik: https://stepik.org/lesson/567/step/6
 
Step on Stepik: https://stepik.org/lesson/567/step/6
  
<img width="50%" src="https://ucarecdn.com/506e561b-9b0c-4773-a161-9488dd7f75f3/">
+
[[File:Step_6_(S-11551)_1.png|border|800px]]
  
 
[00:00 - 00:18] еще 1 техника которая нередко используются при программировании на шаблонов си + + это использование шаблонных функций для вывода значений шаблонных параметров для шаблонов раз напомню что выводы значение шаблонных параметров все + + работает только для шаблонов функций или шаблонов метод
 
[00:00 - 00:18] еще 1 техника которая нередко используются при программировании на шаблонов си + + это использование шаблонных функций для вывода значений шаблонных параметров для шаблонов раз напомню что выводы значение шаблонных параметров все + + работает только для шаблонов функций или шаблонов метод
Line 18: Line 18:
  
  
<img width="50%" src="https://ucarecdn.com/fcfada78-7567-4c6a-bf6c-e5818d85b7c4/">
+
[[File:Step_6_(S-11551)_2.png|border|800px]]
  
 
[01:31 - 01:49] привет переменные данного типа то нам сюда нужно будет явно указывать значение шаблонных параметров это же нужно будет делать и в том случае если мы хотим создать временное значение типа давайте посмотрим на то есть например пусть у нас объявлена некоторой функции которые принимают
 
[01:31 - 01:49] привет переменные данного типа то нам сюда нужно будет явно указывать значение шаблонных параметров это же нужно будет делать и в том случае если мы хотим создать временное значение типа давайте посмотрим на то есть например пусть у нас объявлена некоторой функции которые принимают

Latest revision as of 13:11, 7 August 2017

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

Step 6 (S-11551) 1.png

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


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


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


[00:54 - 01:12] пусть у нас определена такая несложная шаблонное структуры структуры есть 2 шаблона параметра то что некоторый тип second и данные шаблоны структура хранит до поля


[01:12 - 01:31] и кроме того у нее определен конструктор от был значения который позволяет проанализировать понять то что то есть данная структура позволяет объединить пару значение каких то типов если мы будем


Step 6 (S-11551) 2.png

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


[01:49 - 02:07] вот если мы хотим вызвать такую функцию передать сюда значение типа плеер cd расчет соответственно 3 4,5 то для того чтобы вывод таков от временного значения pr нам надо будет написать следующий год


[02:07 - 02:25] надо будет вызвать функцию передать туда временное значение pr double и передать значение 3 4,5 в конструктор однако можете заметить что некоторой информации о типах есть дублируются то есть тип int


[02:25 - 02:40] соответствует 1 параметра который мы передали в конструктор t double соответствует 2 параметру который мы передали в конструктор таким образом можно было бы не писать эти типы можно было попытаться вывести


[02:40 - 02:56] однако вывода типов нет ну в данном случае это объясняется тем что у шаблона класс может быть несколько шаблоны конструкторов и непонятно как водитель типа в данном случае однако конкретно для типа пр content для этого конструктора мы могли бы


[02:56 - 03:11] добавить вывод типов это делается при помощи шаблонных мы определяем шаблонную функцию которая будет иметь соответствующий шаблонные параметры first second


[03:11 - 03:27] на будут принимать значение этих типов в что second как свои аргументы и возвращаемые значения типа pr эффект создавать это значение на будет просто


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


[03:46 - 04:02] не указывать явным образом типа шаблонных насчет того что мы к пыль это шаблонная функция не работает механизм вывода шаблонных параметров и компилятор догадается что соответствует int


[04:02 - 04:18] это будет выведено по типу 1 параметра который имеет 2 шаблонный параметр будет виден путь 2 параметра функции который имеет всегда был таким образом ты который будет вызвано это будет в конце


[04:18 - 04:34] make pr от int дал а функция mail pr от in double дрожать от инвалидов и таким образом за счет механизма вывода шаблонных параметров для


[04:34 - 04:39] шаблона функций мы получили вот шаблонных параметров для шаблонов класс