Для чего нужен аллокатор и как создать свой собственный аллокатор?
Аллокатор это шаблонный класс, который отвечает за выделение памяти и создание объектов. По умолчанию все контейнера используют std::allocator<T>.
В языке c++ имеется так же возможность написать свой аллокатор. У своего алокатора должно быть такое объявление(см картинку).
Аллокатор это шаблонный класс, который отвечает за выделение памяти и создание объектов. По умолчанию все контейнера используют std::allocator<T>.
В языке c++ имеется так же возможность написать свой аллокатор. У своего алокатора должно быть такое объявление(см картинку).
This media is not supported in your browser
VIEW IN TELEGRAM
Как написать «Змейку» на C++ в четыре переменные?
Пишем классическую «Змейку», как на КДПВ, в четыре переменные.
Смотреть статью
Пишем классическую «Змейку», как на КДПВ, в четыре переменные.
Смотреть статью
#вопросы_с_собеседований
Объясните ключевые слова
Ключевое слово
Ключевое слово
Объясните ключевые слова
mutable и volatile.Ключевое слово
volatile сообщает компилятору, что переменная может измениться без ведома компилятора. Переменные, объявленные как volatile, не будут кэшироваться компилятором и, таким образом, всегда будут считываться из памяти.Ключевое слово
mutable можно использовать для переменных-членов класса. Изменяемые переменные могут меняться из константных функций-членов класса.#вопросы_с_собеседований
Какую проблему решает пространство имён?
Пространство имен — это идентификатор, предоставляющий несколько библиотек. Используется для устранения конфликтов имен, когда имя связано с двумя или более библиотеками. Включает внешние объявления библиотеки с уникальными пространствами имен, что исключает возможность конфликта.
Какую проблему решает пространство имён?
Пространство имен — это идентификатор, предоставляющий несколько библиотек. Используется для устранения конфликтов имен, когда имя связано с двумя или более библиотеками. Включает внешние объявления библиотеки с уникальными пространствами имен, что исключает возможность конфликта.
#вопросы_с_собеседований
В чем разница между struct и class?
Ответ: Практически ни в чем. В struct модификаторы доступа по умолчанию public, в class private. Также отличается и наследование по умолчанию, у struct — public, у class — private.
В чем разница между struct и class?
Ответ: Практически ни в чем. В struct модификаторы доступа по умолчанию public, в class private. Также отличается и наследование по умолчанию, у struct — public, у class — private.
Строковые литералы как параметры шаблона
Начиная с C ++ 20, вы можете использовать строку в качестве параметра шаблона, не являющегося типом. Идея состоит в том, чтобы использовать стандартную строку basic_fixed_string, которая имеет конструктор constexpr. Конструктор constexpr позволяет ему создать экземпляр фиксированной строки во время компиляции.
Вроде бы мелочь, а приятно — не нужно производить обходных маневров и использовать лишнюю память.
Начиная с C ++ 20, вы можете использовать строку в качестве параметра шаблона, не являющегося типом. Идея состоит в том, чтобы использовать стандартную строку basic_fixed_string, которая имеет конструктор constexpr. Конструктор constexpr позволяет ему создать экземпляр фиксированной строки во время компиляции.
Вроде бы мелочь, а приятно — не нужно производить обходных маневров и использовать лишнюю память.
#вопросы_с_собеседований
Для чего используется ключевое слово volatile?
Для указания компилятору, что доступ к переменной может осуществляться из мест, неподконтрольных ему. А как следствие, что работу с данной переменной не нужно подвергать разного рода оптимизациям.
Т.е. если volatile присутствует в каком-то условии, которое не меняется со временем, то компилятор может оптимизировать его, чтобы избежать ненужных проверок, при использовании volatile компилятор скорее всего не будет этого делать.
Для чего используется ключевое слово volatile?
Для указания компилятору, что доступ к переменной может осуществляться из мест, неподконтрольных ему. А как следствие, что работу с данной переменной не нужно подвергать разного рода оптимизациям.
Т.е. если volatile присутствует в каком-то условии, которое не меняется со временем, то компилятор может оптимизировать его, чтобы избежать ненужных проверок, при использовании volatile компилятор скорее всего не будет этого делать.
Дрон потерял связь, навигация дала сбой или просело питание. Как понять, что произошло в полёте и какие события привели к аварии? Ответы стоит искать в логах автопилота — важно уметь сопоставлять параметры и читать графики.
5 ноября в 20:00 на открытом уроке курса «Разработчик ПО для дронов: ArduPilot, C++ и ROS 2» разберёте логи реальных аварий БПЛА и настройку Failsafe-сценариев.
Узнаете, какие данные записывает автопилот и как выгрузить DataFlash-логи через Mission Planner. На примере двух-трёх случаев рассмотрите сбои навигации, питания и связи. Разберёте графики EKF, IMU и токов, чтобы восстановить последовательность событий и разобраться в возможных причинах отказа.
Затем перейдёте к аварийным сценариям в ArduPilot. Настроите стандартный Failsafe через графический интерфейс и проверите поведение дрона при потере связи в симуляторе SITL.
Урок подойдёт C/C++- и Python-разработчикам, инженерам встраиваемых систем и специалистам по БПЛА, которые хотят глубже понимать работу автопилота. После занятия вы сможете увереннее разбирать полётные логи и проверять настройки реакции на сбои в симуляторе.
Урок проведёт Игорь Морозов.
Зарегистрироваться: https://otus.pw/l0TS/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
5 ноября в 20:00 на открытом уроке курса «Разработчик ПО для дронов: ArduPilot, C++ и ROS 2» разберёте логи реальных аварий БПЛА и настройку Failsafe-сценариев.
Узнаете, какие данные записывает автопилот и как выгрузить DataFlash-логи через Mission Planner. На примере двух-трёх случаев рассмотрите сбои навигации, питания и связи. Разберёте графики EKF, IMU и токов, чтобы восстановить последовательность событий и разобраться в возможных причинах отказа.
Затем перейдёте к аварийным сценариям в ArduPilot. Настроите стандартный Failsafe через графический интерфейс и проверите поведение дрона при потере связи в симуляторе SITL.
Урок подойдёт C/C++- и Python-разработчикам, инженерам встраиваемых систем и специалистам по БПЛА, которые хотят глубже понимать работу автопилота. После занятия вы сможете увереннее разбирать полётные логи и проверять настройки реакции на сбои в симуляторе.
Урок проведёт Игорь Морозов.
Зарегистрироваться: https://otus.pw/l0TS/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru