Difference between revisions of "Step 5 (S-11550)"

From Stepik Wiki
Jump to: navigation, search
(Create page for step id=11550)
 
 
Line 1: Line 1:
 
Step on Stepik: https://stepik.org/lesson/567/step/5
 
Step on Stepik: https://stepik.org/lesson/567/step/5
  
<img width="50%" src="https://ucarecdn.com/ebbfb3e9-e48f-43f7-80bd-21b0a0ff9bdb/">
+
[[File:Step_5_(S-11550)_1.png|border|800px]]
  
 
[00:00 - 00:16] 1 из техник которое применяется шаблонности + это использование зависимостями давайте разберем это на следующем примере шаблоном краснодара при определении шаблонного класса можно определите такой синоним для типа которые соответствуют типу элементов хранимых данных моисею
 
[00:00 - 00:16] 1 из техник которое применяется шаблонности + это использование зависимостями давайте разберем это на следующем примере шаблоном краснодара при определении шаблонного класса можно определите такой синоним для типа которые соответствуют типу элементов хранимых данных моисею
Line 9: Line 9:
  
  
<img width="50%" src="https://ucarecdn.com/72ff2bdd-ed55-4742-ad84-189be576f2f0/">
+
[[File:Step_5_(S-11550)_2.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/beba794a-5eca-4f30-96c7-dffc090a0066/">
+
[[File:Step_5_(S-11550)_3.png|border|800px]]
  
 
[00:31 - 00:49] можно будет написать re от into двоеточие двоеточие вылетает и это будет соответствовать типу элементов данного массива то есть будет соответствовать типу и таким образом для такого короткого поэтому придумали такой длинный длинный сигнал
 
[00:31 - 00:49] можно будет написать re от into двоеточие двоеточие вылетает и это будет соответствовать типу элементов данного массива то есть будет соответствовать типу и таким образом для такого короткого поэтому придумали такой длинный длинный сигнал
  
  
<img width="50%" src="https://ucarecdn.com/60f975e0-9904-4b85-80bf-e48bbe2f9039/">
+
[[File:Step_5_(S-11550)_4.png|border|800px]]
  
 
[00:49 - 01:06] зачем это нужно а нужно это для использования внутри шаблона функции шаблонов методов шаблонов класс внутри шаблона функции например можно будет по типу контейнера получить тип элемента который хранится в данном контексте это очень удобно давайте рассмотрим это на личном примере
 
[00:49 - 01:06] зачем это нужно а нужно это для использования внутри шаблона функции шаблонов методов шаблонов класс внутри шаблона функции например можно будет по типу контейнера получить тип элемента который хранится в данном контексте это очень удобно давайте рассмотрим это на личном примере
  
  
<img width="50%" src="https://ucarecdn.com/c42fa3e9-8e54-4f37-aa1e-ae721ff2460c/">
+
[[File:Step_5_(S-11550)_5.png|border|800px]]
  
 
[01:06 - 01:22] предположим мы хотим определить шаблоны функцию content которые принимают некоторые контейнер некоторое значение проверяет есть ли это значение среди элементов данного контейнера например она принимает double
 
[01:06 - 01:22] предположим мы хотим определить шаблоны функцию content которые принимают некоторые контейнер некоторое значение проверяет есть ли это значение среди элементов данного контейнера например она принимает double
Line 29: Line 29:
  
  
<img width="50%" src="https://ucarecdn.com/44bd1a2d-856f-4445-85bb-56fb8fb35736/">
+
[[File:Step_5_(S-11550)_6.png|border|800px]]
  
 
[01:38 - 01:55] элементов хранения данных контейнеров контейнер и значении должны того же типа что элемент и вот здесь как раз нужно такое зависимостями то есть мы определяем шаблонную функцию с 1 шаблоном параметрам этот параметр
 
[01:38 - 01:55] элементов хранения данных контейнеров контейнер и значении должны того же типа что элемент и вот здесь как раз нужно такое зависимостями то есть мы определяем шаблонную функцию с 1 шаблоном параметрам этот параметр
  
  
<img width="50%" src="https://ucarecdn.com/baed5925-82c6-4437-8a40-94b50d017db2/">
+
[[File:Step_5_(S-11550)_7.png|border|800px]]
  
 
[01:55 - 02:11] типовые шаблоны параметры соответствуют content в качестве 1 аргумента данной функции мы передаем по константной ссылке экземпляр данного контейнера по константы потому что мне нужно менять контейнер нужно просто передать его элементов
 
[01:55 - 02:11] типовые шаблоны параметры соответствуют content в качестве 1 аргумента данной функции мы передаем по константной ссылке экземпляр данного контейнера по константы потому что мне нужно менять контейнер нужно просто передать его элементов
  
  
<img width="50%" src="https://ucarecdn.com/c433bdd6-47c6-4656-adb3-6b0cff9d06f2/">
+
[[File:Step_5_(S-11550)_8.png|border|800px]]
  
 
[02:11 - 02:26] а в качестве 2 аргумента мы передаем значение типа которые соответствуют типу элементов данного контейнера здесь мы используем зависимостями контейнер type и таким образом данная функция будет работать
 
[02:11 - 02:26] а в качестве 2 аргумента мы передаем значение типа которые соответствуют типу элементов данного контейнера здесь мы используем зависимостями контейнер type и таким образом данная функция будет работать
  
  
<img width="50%" src="https://ucarecdn.com/e8d9b165-e988-43da-bf4e-0f794067ae9d/">
+
[[File:Step_5_(S-11550)_9.png|border|800px]]
  
 
[02:26 - 02:45] с любым контейнерам которого объявлены данной зависимая ну например с нашим шаблонам типом можем объявить переменную вызвать функцию контент при этом за счет вывода параметров шаблоны функцию компилятор сам
 
[02:26 - 02:45] с любым контейнерам которого объявлены данной зависимая ну например с нашим шаблонам типом можем объявить переменную вызвать функцию контент при этом за счет вывода параметров шаблоны функцию компилятор сам
  
  
<img width="50%" src="https://ucarecdn.com/2b65b4a4-d1bc-4ab0-ad85-5c2033d3f36c/">
+
[[File:Step_5_(S-11550)_10.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/78283c8f-1066-43fd-960c-c057abd71887/">
+
[[File:Step_5_(S-11550)_11.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/f8ef89bd-2c65-41ca-abc5-e3493543696e/">
+
[[File:Step_5_(S-11550)_12.png|border|800px]]
  
 
[02:45 - 03:00] догадаются что тип контейнера соответствуют я агент а значит 2 параметр соответствует важно отметить что
 
[02:45 - 03:00] догадаются что тип контейнера соответствуют я агент а значит 2 параметр соответствует важно отметить что
Line 61: Line 61:
  
  
<img width="50%" src="https://ucarecdn.com/43e5a42c-d032-4290-8753-8c028095e721/">
+
[[File:Step_5_(S-11550)_13.png|border|800px]]
  
 
[03:17 - 03:34] как авторы данного шаблона класса знаем что даны выражения соответствует типу точнее синонимы который определял внутри класса но компилятора то не всегда понятно и он может предположить например что
 
[03:17 - 03:34] как авторы данного шаблона класса знаем что даны выражения соответствует типу точнее синонимы который определял внутри класса но компилятора то не всегда понятно и он может предположить например что
  
  
<img width="50%" src="https://ucarecdn.com/ccf7154c-6609-46a1-b106-82cc8bf33306/">
+
[[File:Step_5_(S-11550)_14.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/076f88c8-5a7f-47cd-93a9-cdb3d5ac4efd/">
+
[[File:Step_5_(S-11550)_15.png|border|800px]]
  
 
[03:34 - 03:52] данное выражение соответствующий типу а некоторым историческим и поля которые объявлены 3 то шаблонную класс чтобы компилятор не запутать нам нужно ему явно указать что данная зависимость имя соответствует типу и дятлов используется
 
[03:34 - 03:52] данное выражение соответствующий типу а некоторым историческим и поля которые объявлены 3 то шаблонную класс чтобы компилятор не запутать нам нужно ему явно указать что данная зависимость имя соответствует типу и дятлов используется

Latest revision as of 13:11, 7 August 2017

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

Step 5 (S-11550) 1.png

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


[00:16 - 00:31] не назвать этот синонима вылетает это стандартное имя для такого типа синонимов которые определяются в шаблонах контейнеров тогда до какого то конкретного типа массива например для рф от int


Step 5 (S-11550) 2.png

Step 5 (S-11550) 3.png

[00:31 - 00:49] можно будет написать re от into двоеточие двоеточие вылетает и это будет соответствовать типу элементов данного массива то есть будет соответствовать типу и таким образом для такого короткого поэтому придумали такой длинный длинный сигнал


Step 5 (S-11550) 4.png

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


Step 5 (S-11550) 5.png

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


[01:22 - 01:38] число 3,5 и проверяет есть ли 3,5 в этом массиве как это делается но нам надо каким то образом определить функции которой примет контейнер а в качестве 2 параметра передают некоторый тип которые соответствуют


Step 5 (S-11550) 6.png

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


Step 5 (S-11550) 7.png

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


Step 5 (S-11550) 8.png

[02:11 - 02:26] а в качестве 2 аргумента мы передаем значение типа которые соответствуют типу элементов данного контейнера здесь мы используем зависимостями контейнер type и таким образом данная функция будет работать


Step 5 (S-11550) 9.png

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


Step 5 (S-11550) 10.png

Step 5 (S-11550) 11.png

Step 5 (S-11550) 12.png

[02:45 - 03:00] догадаются что тип контейнера соответствуют я агент а значит 2 параметр соответствует важно отметить что


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


Step 5 (S-11550) 13.png

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


Step 5 (S-11550) 14.png

Step 5 (S-11550) 15.png

[03:34 - 03:52] данное выражение соответствующий типу а некоторым историческим и поля которые объявлены 3 то шаблонную класс чтобы компилятор не запутать нам нужно ему явно указать что данная зависимость имя соответствует типу и дятлов используется


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