Найти в Дзене
Покупайте СтеллыИ дарите их за контент
3 недели назад
 • Вы подписаны

Правильно используем тип size_type в программах на С++

Каждый более менее опытный разработчик при чтении кода (легаси и не только) сталкивался с циклами итерации по элементам вектора следующего вида: for(int i = 0; i < vec.size(); ++i) { /* обрабатываем значение vec[i]*/}. Хотя в С++ давно изобрели способы избавиться от такой записи цикла, начиная с std::for_each и заканчивая более лаконичной for(const auto& el : vec), но длинную форму for до сих пор можно встретить довольно часто. Она порождает предупреждения при компиляции: warning: comparison...

3 недели назад
 • Вы подписаны

Введение в шаблонную магию С++

Наверное каждый программист на С++ слышал выражение "магия шаблонов" или "шаблонная магия". Сегодня начнем разбираться в том, что же она из себя представляет. "Магия" — это использование механизма шаблонов (template) для вычислений, проверок и трансформации кода на этапе компиляции, а не во время выполнения программы. Программисты называют это "магией", потому что сложный шаблонный код заставляет компилятор выполнять полноценные логические операции (ветвления, эмуляцию циклов через рекурсию) ещё до запуска программы...

4 месяца назад
 • Вы подписаны

Всё что вы хотели знать об умных указателях в С++

Сегодня поговорим об использовании интеллектуальных указателей в реальных проектах. Разберем вопросы о том каковы основные сценарии использования weak_ptr в паре с shared_ptr, как устроены shared_ptr и weak_ptr "под капотом", изучим накладные расходы при использовании shared_ptr и weak_ptr, а также большое количество связанных с этим проблем. Предполагается наличие у читателя предварительных знаний о назначении интеллектуальных указателей. Использование std::weak_ptr вместе с std::shared_ptr —...

4 месяца назад
 • Вы подписаны

Применяем пользовательские типы для предотвращения ошибок в передаче параметров в С++

Допустим что перед нами стоит задача разработать тип данных, задающий положение на плоскости некторой точки, например, персонажа компьютерной игры. Первый вариант может выглядеть следующим образом: class Coord { int x_, y_; public: Coord(int x, int y) : x_(x), y_(y) {} //далее идут методы для работы с координатами }; Несмотря на крайнюю простоту, при использовании Coord может возникнуть проблема, связанная с тем, что оба параметра конструктора имеют один и тот же тип. Следовательно, передаваемые...

4 месяца назад
 • Вы подписаны

Тестируем код зависящий от временных интервалов

Представим что Вам нужно протестировать функцию, которая работает со временем, ожидая, к примеру, 5 секунд. Как протестировать такой код в google mock чтобы при каждом прогоне теста не ждать 5 секунд? Для того, чтобы тесты выполнялись мгновенно, необходимо вынести функционал работы с системным временем в отдельную абстракцию. Вместо прямого вызова std::this_thread::sleep_for или использования std::chrono::system_clock код должен обращаться к интерфейсу, абстрагирующему работу со временем. class...

Покупайте СтеллыИ дарите их за контент