наконец то )) а то предыдушие лекции чуть не сдох ))
@noname_2108 Жыл бұрын
интересно и полезно, спасибо!
@MrDimonsky3 жыл бұрын
Поражаюсь маленькому количеству просмотров. Нэверю. В топ однозначно.
@theK0sh5 жыл бұрын
В функции вычисления всех простых чисел на 40:00 нет необходимости идти на ухищрения для инициализации массива в компайл-тайм. Достаточно использовать zero-initialization: template constexpr auto eratosthenes_sieve() { std::array primes{}; for (size_t i = 2; i < N + 1; ++i) primes[i] = true; for (size_t i = 2; i * i
@PVSStudioTool5 жыл бұрын
Можно и так. Ваш пример более читабельный и простой. Главное сохранять баланс между читабельностью и производительностью: весь этот код будет происходить на этапе компиляции. Ведь если таких вычислений много, то компиляция затянется. По идее, в приведенном примере 'constexpr'-эвалюатор сначала заполнит весь массив нулями (false'ами), а затем, начиная с третьего элемента (индекс 2), заполнит массив повторно единицами (значениями 'true'). В исходном варианте инициализация происходит при объявлении. По идее, компилироваться должно пошустрее. Плюс показана такая штука, как std::integer_sequence
@eugenesasin27575 жыл бұрын
22:05 на слайде во время объяснения шаблона с переменным числом параметров перепутали местами 42 и 0.0
@PVSStudioTool5 жыл бұрын
Верно. Спасибо за комментарий. Баги встречаются)
@eugenesasin27575 жыл бұрын
@@PVSStudioTool В лекции не хватает перед блоками введения. Например, было бы неплохо перед примерами рассказать про идеи, которые заложены в SFINSE, CRTP, Детекторы...
@kpanat Жыл бұрын
а можно это всё сделать как-то попроще? А то намудрили... Ой... Я вспоминаю C# так там всё проще: просто ваш класс должен наследоваться от соответствующего интерфейса... И усё!!! И они все так... А тут почему так сложно?! Непонятно...
@PVSStudioTool Жыл бұрын
Как сказал один мудрец в комментах к нашим видео: kzbin.info/www/bejne/gYHYiqGVm7qXrsU&lc=UgzLW5kC9kcDdEY49U94AaABAg А человек не будет развиваться если не давать ему нагрузку на мозг. Если не тренировать мозги то он будет деградировать а потом альцгеймер и усё человек уже и не человек, а растение... Вот метапрограммирование в C++ и помогает бороться с Альцгеймером :)
@kpanat Жыл бұрын
42:31 Вывод конечно отвратительный! Видно идея использовать тут array была явно дебильской... Если такое написать в проекте, то вас точно попросят переписать в виде вектора простых чисел... Потому что булевый массив в котором надо проверять каждый раз true там или false и ещё индексироваться нафик никому не нужен! Трудно было придумать что-то более неудобное, чем это...
@kpanat Жыл бұрын
Да есть алгоритм Brian Kernighan он простой, будет компилиться быстрее! constexpr uint8_t popcount(uint64_t value) noexcept { uint8_t res = 0; for(; value; ++res) { value &= value-1; } return res; }