C++ ⦁ Теорія ⦁ Урок 49 ⦁ Шаблони функцій

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ธ.ค. 2024

ความคิดเห็น • 40

  • @Михайло-у2о
    @Михайло-у2о ปีที่แล้ว +2

    Просто пишу комент, бо подобається контент

  • @ЕленаТретякова-ш7ф
    @ЕленаТретякова-ш7ф ปีที่แล้ว

    ваш канал, це дуже користна річ ! Схоже на те що я з вами на довго.

  • @fehtongx7445
    @fehtongx7445 2 ปีที่แล้ว +1

    Дякую за урок.

  • @wavecheeez1246
    @wavecheeez1246 2 ปีที่แล้ว +2

    4:09 щось впало))

    • @BloganProgramming
      @BloganProgramming  2 ปีที่แล้ว +2

      То пам'ять відвалилася)

  • @OleksiyKoyfman
    @OleksiyKoyfman 2 ปีที่แล้ว +1

    Дякую! 👍

  • @madcatwelding
    @madcatwelding 2 ปีที่แล้ว +3

    Підписалося 700 користувачі. Мої вітання з маленьким ювілеєм :)

  • @madcatwelding
    @madcatwelding 2 ปีที่แล้ว +4

    Трохи тяжка тема , 3 рази передивлявся поки все зрозумів

    • @BloganProgramming
      @BloganProgramming  2 ปีที่แล้ว +1

      Це дійсно важка тема. Спробуйте її також погуглити в інших джерелах. Допоможе.

  • @ВиталийСтепаненко-в7в
    @ВиталийСтепаненко-в7в ปีที่แล้ว +1

    дуже не вистачає практичних уроків, набагато ваще запамятовується інформація без них. Хоча відео по теорії прекрасні, все зрозуміло)

    • @BloganProgramming
      @BloganProgramming  ปีที่แล้ว

      Це уже не проблема відсутності практики, а ваша)

  • @venquro
    @venquro ปีที่แล้ว

    Дякую за чудовий урок! На скільки я зрозумів, то "шаблон функції " в C++ працює так само, як і Generics в Java?
    Вивчав Джаву в універі і ця концепція видалась дуже знайомою.

    • @BloganProgramming
      @BloganProgramming  11 หลายเดือนก่อน

      Приблизно так само.

  • @SerhiiNikulin99
    @SerhiiNikulin99 2 ปีที่แล้ว

    👍
    підскажи будь ласка - функція генерується з шаблону під час компіляції або під час виконання програми? Таке ж питання для явної спеціалізації
    Дякую

    • @BloganProgramming
      @BloganProgramming  2 ปีที่แล้ว +2

      1. Якщо у вас є шаблон функції, то ніяких функцій генеруватися не буде, якщо ви ніде не викликали шаблон такої функції.
      2. Якщо в коді все таки є виклик, то на етапі КОМПІЛЯЦІЇ генерується функція.
      3. Явна спеціалізація суті не міняє. Якщо ні разу не викликаєте - не буде функції. Якщо викликаєте - сгенерується на етапі компіляції.

  • @Michael-ro5fv
    @Michael-ro5fv 3 ปีที่แล้ว +4

    треба ще зробити телеграм канал

    • @BloganProgramming
      @BloganProgramming  2 ปีที่แล้ว

      Я не настільки популярний і активний, щоб заводити телеграм канал.

    • @KadenDev
      @KadenDev 2 ปีที่แล้ว +4

      @@BloganProgramming та ну, заведи)))

  • @ЯрославУстименко-х5щ
    @ЯрославУстименко-х5щ ปีที่แล้ว

    Для вирішення проблеми , який тип повертати, можна просто написати слово auto, наприклад auto Sum(T1 a, T2 b);
    Можна не вказувати хвостовий тип, і так працює
    Чи взагалі чи є сенс додавати два різні типи? Це працює з числами, з іншими типами немає сенсу

    • @BloganProgramming
      @BloganProgramming  ปีที่แล้ว

      Про ключове слово auto є окремий урок. Перед тим як писати такі коментарі (а це уже у вас другий такий коментар) задумайтеся над тим, що можливо такі теми уже піднімаються на моєму каналі в наступних уроках.
      На рахунок хвостового типу - так буде працювати лише при використанні ключового слова auto і стандарту C++14 і вище.
      Додавання різних типів - це лише простий приклад того, як можна скомпілювати операцію (не обов'язково додавання) над різними типами завдяки компілятору. Ви не бачите сенсу в додаванні, ок. От вам один із сенсів: додайте об'єкт класу Matrix до об'єкту класу Vector. Це два різних класи, які не вбудовані в С++ бібліотеку.

    • @ЯрославУстименко-х5щ
      @ЯрославУстименко-х5щ ปีที่แล้ว

      @@BloganProgramming
      C++14 по замовчування саме цей стандарт встановлено у студії 2022, меншого немає
      Matrix + Vector це поодинокий випадок, не потрібно писати шаблон. Достатньо звичайної функції sum чи operator+

  • @ОлексійІвахненко-ь5п
    @ОлексійІвахненко-ь5п 11 หลายเดือนก่อน

    Доброго дня!
    є функція
    void someFunct(int g, int y, int r, int b) {
    // ... do something
    }
    є код з викликом функції
    int Args[4] = { 0, 1, 0, 0 }; // init array with 4 elements
    auto [g, y, r, b] = Args; // unpack array to a variables
    someFunct(g, y, r, b); // call function using a variables
    Питання:
    як зробити unpack безпосередньо під час виклику функції ?
    тобто щоб було приблизно так (написано невірно, але з ціллю передати суть)
    someFunct(auto [g, y, r, b] = Args);
    або
    someFunct(...Args);

    • @BloganProgramming
      @BloganProgramming  11 หลายเดือนก่อน

      Так робити не можна. Але можливо вам допоможе урок "Варіативні шаблони".

    • @ОлексійІвахненко-ь5п
      @ОлексійІвахненко-ь5п 11 หลายเดือนก่อน

      Мається на увазі в c++ технічно не можливо так зробити?

    • @BloganProgramming
      @BloganProgramming  11 หลายเดือนก่อน

      @@ОлексійІвахненко-ь5п Такого коду я не бачив.

  • @androidpasha
    @androidpasha 11 หลายเดือนก่อน

    Доброго здоров'я. Підкажіть як приймати в перенавантажену функцію тільки контейнери STL?
    Приклад перенавантаженої функції нижче, одна має приймати контейнери а друга все інше.
    // приймає вектор а треба і map і лист і інші контейнери.
    template
    bool write(std::vector &data) {return true; }
    //приймає все крім вектора. А треба все крім STL контейнерів.
    template
    bool write( T &data) {return true;}

    • @BloganProgramming
      @BloganProgramming  11 หลายเดือนก่อน +1

      Відповідь на перше питання:
      template
      bool write(Container& data) { return true; }
      Відповідь на друге питання:
      1. По-перше ваша функція приймає вектор. Тому я не розумію, з чого ви взяли, що вона приймає все крім вектора.
      2. По-друге якщо вам так хочеться, щоб функція не приймала всі контейнери, то вам треба буде прописувати вручну наступне:
      template
      bool write(std::vector& data) = delete;
      template
      bool write(std::list& data) = delete;
      template
      bool write(std::deque& data) = delete;
      template
      bool write(std::set& data) = delete;
      І так далі.

    • @androidpasha
      @androidpasha 11 หลายเดือนก่อน

      @@BloganProgramming Дякую за відповідь! Я мабудь невірно коментарії написав. Верхня функція має обробляти контейнери а нижня все інше. Ціль - зберігати у файл змінні які можуть бути як звичайна змінна типу int так і вектор структур чи інший контейнер. Змінна просто записується у файл а по контейнеру треба пройтись циклом і почергово перепесати кожен елемент. Пробую створити загальну функцію для контейнерів. Чат gpt підказує що можно перевіряти тип даних перед функцією, та поки що не компілюється його варіант. Вчуся програмувати мікроконтроллер, трохи відрізняється запис файлів від ПК.

  • @kuilconnor
    @kuilconnor 7 หลายเดือนก่อน

    Добрий день, Деміен.
    Будь ласка залиште карту монобанку для можливості віддячити. Я намагався зайти з ноутбука і з телефону по посиланню і пише помилка, коли намагаюсь зробити платіж.

    • @BloganProgramming
      @BloganProgramming  7 หลายเดือนก่อน +1

      Доброго дня. Карту я скидати точно не буду, але можете спробувати ще це посилання. Це донатна сторінка мого іншого каналу. ko-fi.com/blogan

  • @Edvin-t9b
    @Edvin-t9b 7 หลายเดือนก่อน

    перевантаження*

    • @BloganProgramming
      @BloganProgramming  7 หลายเดือนก่อน

      перезавантаження*

  • @MrTruth2
    @MrTruth2 ปีที่แล้ว +1

    Уроки класні , але не можливо слухати з-за музики.

    • @BloganProgramming
      @BloganProgramming  ปีที่แล้ว

      Так, в перших десятках уроків музика буває гучною. Тим не менш слова все одно можна розібрати. Якщо вам важливі знання, то ви все зможете почути.

    • @nepyx3572
      @nepyx3572 ปีที่แล้ว

      * короче,це буде не легко...
      * Короче,є така штука як ШАБЛОНИ ФУНКЦІЙ
      * Синтаксис: template