Публикации по теме 'cpp'


Имя ведущего типа, «точечный шаблон» и почему они необходимы
Любой, кто имеет дело с шаблонами, рано или поздно столкнется с чем-то вроде этого Но подождите, ошибка единственного оператора в f() В данном случае ошибка gcc очень хороша, поскольку нам нужно добавить ведущее имя типа, чтобы это получилось: typename Obj<T>::type var; Ведущее имя сообщает компилятору, что Obj<T>::type является типом. Но зачем нам это нужно? Мы знаем, что Obj<T> является зависимым типом, потому что он зависит от T. Во-первых, вы..

Понимание приведений C ++
C ++, будучи строго типизированным языком, строг со своими типами. И всегда бывают случаи, когда нужно преобразовать один тип в другой, что называется приведением. Иногда приведение выполняется неявно. Например - int a = 10; long b = a; Это называется неявным преобразованием. Более конкретно, приведенный выше пример представляет собой стандартное преобразование, которое происходит автоматически между основными типами ( int в short , int в float , int в bool и т. Д.) И..

C++ Type Erasure: перенос любого типа
Понимание того, как написать оболочку любого типа в классе на C++, чтобы повысить уровень абстракции в нашем коде. Введение Мы начнем с некоторых основ универсального программирования, объектно-ориентированного программирования и концепций Duck Typing, чтобы понять, какие проблемы пытается решить этот метод. Мы рассмотрим детали шаг за шагом в конце этого поста. Общее программирование Универсальное программирование относится к стилю программирования, в котором функции или..

Итераторы в C ++ - Meetup Cpp
Всем привет! Эта статья представляет собой резюме моей презентации, объясняющей тему итератора на языке C ++, 18.07.2018 на Встрече по C ++ из Барселоны . Прежде чем продолжить, хочу поблагодарить всех, кто заходит и проявляет интерес к этой теме. Пойдем!. Итератор - что, зачем и основы Как указывает Википедия, итератор - это объект, который позволяет программисту перемещаться по контейнеру, не зная, как этот контейнер реализован . Причина того, что контейнеры и алгоритмы STL..

Простой массив
Описание проблемы: мы хотим разработать простой массив, размер которого можно определить во время выполнения, а его многомерный эквивалент можно будет легко передать функциям. Предпосылки: Общие алгоритмы, требующие использования 2-х или более многомерных контейнеров, могут быть трудны для написания, если мы полагаемся исключительно на массив C-стиля по умолчанию, предоставляемый C++. Проблема с этим кодом заключается в том, что я должен явно определить размер столбца массива..

Размещение матриц в C/C++ и как сделать их быстрее
Матрицы широко используются в компьютерных науках, но их не так просто реализовать/создать на C++ по сравнению с другими языками, такими как Python. Матрица — это, по сути, двумерный массив. Каждую строку матрицы можно рассматривать как массив данных. Например, {9, 13, 5, 2} сам по себе является массивом и оказывается первой строкой матрицы. Точно так же вся матрица может быть записана как; { {9, 13, 5, 2}, {1, 11, 7, 6}, {3, 7, 4, 1}, {6, 0, 7, 10} } Это..

Статический анализ как часть процесса разработки в Unreal Engine
Автор: Андрей Карпов Unreal Engine продолжает развиваться по мере добавления нового кода и изменения ранее написанного кода. Каковы неизбежные последствия постоянного развития проекта? Появление в коде новых ошибок, которые программист хочет выявить как можно раньше. Один из способов уменьшить количество ошибок - использование статического анализатора типа PVS-Studio . Более того, анализатор не только развивается, но и постоянно учится искать новые паттерны ошибок, некоторые из..