ru
Feedback
Senior C++ Developer

Senior C++ Developer

Открыть в Telegram
11 861
Подписчики
-624 часа
-247 дней
-6830 день
Архив постов
#вопросы_с_собеседований Опишите выделение памяти и их отличия? • Статическое выделение памяти - выделяется редактором связей и существует, пока выполняется программа; • Память в стеке - автоматическая память. Выделяется при вызове функции для хранения локальных объектов и очищается автоматически после выхода этих объектов из зоны видимости, то есть после возвращения управления из функции; • Память в куче - динамическая память. Объекты создаются с помощью оператора new и должны быть уничтожены с помощью вызова оператора delete самим программистом.

Избавляемся от макросов В целом, разработчики стандарта стараются исключить препроцессор. Как следствие, в новой версии можно
Избавляемся от макросов В целом, разработчики стандарта стараются исключить препроцессор. Как следствие, в новой версии можно не пользоваться макросами FILE и LINE, а взамен использовать std::source_location(см картинку). Как мы видим, код становится более единообразным, в одном стиле, с расширяемым функционалом.

Квадратный корень и квадратный квадрат Найдите такое число x, что x^2 + sqrt(x) = C, с точностью не менее 6 знаков после точк
Квадратный корень и квадратный квадрат Найдите такое число x, что x^2 + sqrt(x) = C, с точностью не менее 6 знаков после точки. Формат входных данных: В единственной строке содержится вещественное число C (1 ≤ C ≤ 10^10). Формат выходных данных: Выведите одно число — искомый x.

#вопросы_с_собеседований Что такое ссылка? Как можно инициализировать ссылку одной или другой переменной в зависимости от усл
#вопросы_с_собеседований Что такое ссылка? Как можно инициализировать ссылку одной или другой переменной в зависимости от условия? Ответ: Это другое имя для переменной. Ссылку необходимо инициализировать при объявлении и изменять уже нельзя. С помощью тернарного оператора или с помощью лямбда-функции.

Cocos2D-X Библиотека предназначена для упрощения разработки мобильных игр. Пользователи отмечают её доступность, простоту исп
Cocos2D-X Библиотека предназначена для упрощения разработки мобильных игр. Пользователи отмечают её доступность, простоту использования и наличие специального конструктора на основе Cocos Creator. Кстати, с использованием этой библиотеки была разработана игра Badland. Если в игру планируется добавление большого количество анимации и графики, то лучше использовать Unity, который позволяет интегрировать файлы из таких программ, как Photoshop, Maya или Blender. Подробнее можно ознакомиться здесь.

#вопросы_с_собеседований Что вообще означает модификатор virtual? В C++ виртуальные функции позволяют поддерживать полиморфизм – одну из ключевых составляющих ООП. С его помощью в классах-потомках можно переопределять функции класса-родителя. Без виртуальной функции мы получаем «раннее связывание», а с ней – «позднюю привязку». То есть, какая реализация метода используется, определяется непосредственно во время выполнения и основывается на типе объекта с указателем на объект, из которого он построен.

Нам действительно нужно неопределенное поведение? https://www.ralfj.de/blog/2021/11/24/ub-necessary.html

#вопросы_с_собеседований Что такое класс хранения? Класс, который определяет срок существования, компоновку и расположение переменных/функций в памяти. В C ++ поддерживаются такие классы хранения: auto, static, register, extern и mutable. Обратите внимание, что register устарел для C++11. Для C++17 он был удален и зарезервирован для будущего использования.

Функция before_begin() forward_list::before_begin() - это встроенная функция в CPP STL, которая возвращает итератор, который
Функция before_begin() forward_list::before_begin() - это встроенная функция в CPP STL, которая возвращает итератор, который указывает на позицию перед первым элементом forward_list.

Минимально жизнеспособный графический интерфейс на C++. https://ossia.io/posts/minimum-viable/

Продвинутый курс лекций по алгоритмам с ФИВТ МФТИ. https://youtube.com/playlist?list=PL4_hYwCyhAvYzrbNOLAy-EczKdAbWoRDK

Указатель this доступен только внутри нестатических методов класса Попробуем добавить такой метод в наш класс:
static void set(int x) { this->x = x; }
Здесь мы добавили для метода setмодификатор static. obj.set(6); Мы получим ошибку компиляции: ‘this’ is unavailable for static member functions. Это объясняется тем, что указатель this передаётся только в нестатические методы класса как скрытый параметр. В статических методах он недоступен.

Архитектура игрового движка — серия обучающих видео. https://youtu.be/sHVEL90NLhc

Игровой движок для неевклидовых миров, написанный на C++ OpenGL. https://youtu.be/kEB11PQ9Eo8

this удобно использовать для цепочных вызовов Мы можем вернуть ссылку на объект, на котором мы вызываем метод класса:
Foo &set(int x) { this->x = x; return *this; }
Здесь метод set возвращает ссылку на объект класса Foo(Foo&). Такая реализация метода позволяет нам писать код, подобный этому:
obj.set(2).set(8);
Это возможно, поскольку первый вызов метода set возвращает указатель на объект obj. Второй метод вызывается на объекте obj, т. е. можно переписать код так: obj = obj.set(2); obj = obj.set(8);

Автовыведение типа Несмотря на то, что ключевое слово auto было введено еще в C++11, многие программисты продолжают его игнор
Автовыведение типа Несмотря на то, что ключевое слово auto было введено еще в C++11, многие программисты продолжают его игнорировать. А ведь автовыведение позволяет экономить время и делает код лаконичным. Увидеть преимущества можно даже на примере стандартных типов STL.

#вопросы_с_собеседований Что быстрее: постфиксные инкрементные операторы или префиксные? Чем отличается их сигнатура? Префикс
#вопросы_с_собеседований Что быстрее: постфиксные инкрементные операторы или префиксные? Чем отличается их сигнатура? Префиксные операторы быстрее. В постфиксных операторах производится дополнительная операция сохранения предыдущего состояния объекта, а затем только увеличение на 1, а в префиксном операторе после инкрементирования объекта, сразу возвращается ссылка объект. Сигнатура их отличается фиктивным параметром int у постфиксного оператора.

#вопросы_с_собеседований Какие отличия у std::array и std::vector? std::array — это обёртка вокруг обычного массива, фиксированного размера, а std::vector - это динамически расширяемый массив. std::array хранит свои данные в стековой памяти, а vector выделяет память в куче (динамическая память). У std::array в параметрах шаблона указывается тип хранимых элементов и размер массива. А у std::vector - тип элементов и ещё возможно указать аллокатор, который нужно использовать при выделении памяти (с помощью new). std::array чуть лучше по производительности в случае небольшого массива, чем std::vector, который содержит в себе несколько указателей, которые указывают на выделенный в куче кусок памяти.

absl::btree absl::btree — это реализация B-дерева в библиотеке Abseil для C++. Преимущества absl::btree — это хранение данных
absl::btree absl::btree — это реализация B-дерева в библиотеке Abseil для C++. Преимущества absl::btree — это хранение данных в отсортированном порядке, быстрый поиск, вставка и удаление за O(logN), поддержка уникальных и неуникальных ключей, реализация set и map. Применяется в задачах, где нужна высокопроизводительная структура данных с отсортированным доступом, например: Реализация словарей и сортированных множеств; Для хранения данных в базах данных; В поисковых системах для индексов; В структурах вроде кэша для быстрого доступа; В задачах машинного обучения для хранения данных.

std::clamp std::clamp — это функция из стандартной библиотеки, которая позволяет ограничить значение в заданном диапазоне. Фу
std::clamp std::clampэто функция из стандартной библиотеки, которая позволяет ограничить значение в заданном диапазоне. Функция принимает значение, нижнюю и верхнюю границы и возвращает исходное значение, если оно входит в диапазон, или же возвращает ближайшую границу, если значение вне диапазона. Применяется для: — Ограничения числовых значений в заданных пределах. — Обработки данных из недостоверных источников. — Защиты от переполнения/обрезания данных. — Нормализации данных в ML и компьютерном зрении. — Реализации игровой логики в движках. — Обработки аудио- и видео- сигналов.