Изучаем C++. По вопросам сотрудничества: @adv_and_pr
Может ли C++ быть в 10 раз проще и безопаснее? - Херб Саттер - CppCon 2022
https://youtu.be/ELeZAKCN4tY
CRYENGINE — мощная платформа для разработки игр в реальном времени на С++, созданная Crytek.
https://www.cryengine.com/
Узнаем факториал числа
Решение приведено на картинке.
Метод find_last_not_of
Ищет в данной строке последнее появление символа, отличного от символов строки str. Способы вызова и возвращаемое значение аналогичны методу find_first_of.
Получить текущее время и дату в C++
С С++11 стандартным способом является использование библиотеки chrono. Можно получить текущее время при помощи std::chrono::system_clock::now()
от <chrono.h> и преобразовать его в std::time_t
тип.
Затем преобразовать std::time_t на местное календарное время std::ctime в Www Mmm dd hh:mm:ss yyyy формате, как показано на картинке.
KPHP спустя 2 года.
https://habr.com/ru/company/vk/blog/698294/
#вопросы_с_собеседований
Что такое инкапсуляция, наследование, полиморфизм?
Инкапсуляция — это скрытие внутренней реализации от других компонентов (например, использование get-, set- методов).
Наследование — главное преимущество ООП. Выведенный класс (наследник) может наследовать свойства, методы и интерфейс другого класса, который называют базовым, а так же добавлять свои черты, характерные только для него.
Полиморфизм (шаблоны — статический полиморфизм, виртуальные функции, перегрузка функций и операторов — динамический полиморфизм) — повторное использование кода, одно и тоже имя класса или функции для единого класса действий. Вызов конкретной версии функции зависит от объекта, который передают в качества параметра.
Удаление элементов
Для удаления элементов из контейнера list могут применяться следующие функции:
clear(p): удаляет все элементы
pop_back(): удаляет последний элемент
pop_front(): удаляет первый элемент
erase(p): удаляет элемент, на который указывает итератор p. Возвращает итератор на элемент, следующий после удаленного, или на конец контейнера, если удален последний элемент
erase(begin, end): удаляет элементы из диапазона, на начало и конец которого указывают итераторы begin и end. Возвращает итератор на элемент, следующий после последнего удаленного, или на конец контейнера, если удален последний элемент
Применение всех функций представлено на картинке.
Unreal Engine 5 — быстрое начало работы с движком для создания игр.
https://youtu.be/LdJAp1RS04g
Функция isalpha()
Функция isalpha() в С++ проверяет, является ли данный символ буквой или нет.
Синтаксис:
isalpha(int ch).
Возвращаемое значение:
Функция возвращает ненулевое значение, если ch – буква и ноль, если ch не буква.
Juce
Juce — кроссплатформенный фреймворк, предназначенный для создания приложений и плагинов на языке C++.
Документации по Juce много, но не на русском языке. Поэтому можно скачать книгу «Программирование на C++ с JUCE 4.2.x: Создание кроссплатформенных мультимедийных приложений с использованием библиотеки JUCE на простых примерах».
Juce больше популярен среди разработчиков аудио — ПО благодаря набору интерфейсов-оболочек для построения аудио плагинов.
https://juce.com/
Для чего используется вызов throw без аргументов?
Для повторного возбуждения предыдущего исключения и направления его следующему обработчику.
Bitset
Bitset — это контейнер в C++ Standard Library для работы с данными на битовом уровне.
Набор битов хранит биты (элементы только с двумя возможными значениями: 0 или 1). Тем не менее, мы можем получить часть строки, предоставив позиции конструктору bitset (позиции относятся к позиции строки слева направо).
Подробнее можно почитать здесь.
Метод crbegin
Возвращает постоянный обратный итератор, указывающий на последний элемент вектора (обратное начало). Он перемещается от последнего к первому элементу.
Подробнее можно почитать здесь.
Создание игры Pac-Man на C++.
https://youtu.be/Udm2P7hW7oo
gcc 13 будет иметь <format>
https://gcc.gnu.org/pipermail/libstdc++/2022-November/054991.html
Обзор C++ библиотек глубокого обучения Apache.SINGA, tiny-dnn, OpenNN
Смотреть статью
📌 Создание игры "Змейка" на С++ (видеокурс)
Как создать игру на чистом C++? В этом видеокурсе вы сделаете простую игру под названием Змейка на чистом C++. Создание игр на C++ — несложное дело, главное — понимание самих алгоритмов.
1. Создание карты
2. Расположение вещей
3. Логика игры
Метод map::max_size()
map::max_size() — это встроенная функция C++ STL, которая возвращает максимальное количество элементов, которые может содержать контейнер map.
Змейка на С++: создаем первую игру. ЧАСТЬ 1
Смотреть статью
Можно ли в C++ умножать или делить целое значение на степени двойки, не используя операций "*" или "/"?
Это можно делать в любом языке, где есть побитовый сдвиг. Умножению значения x на 2, например, соответствует операция x << 1, а делению y на 4 - действие y >> 4.
Руководство по CMake для разработчиков C++ библиотек.
https://habr.com/ru/post/683204/
#вопросы_с_собеседований
Сколько в памяти занимает произвольная структура?
Ответ: sizeof всех членов + остаток для выравнивания (по умолчанию выравнивание 4 байта) + sizeof указателя на vtable (если есть виртуальные функции) + указатели на классы предков, от которых было сделано виртуальное наследование (размер указателя * количество классов).
Токенизация строки
Токенизация строки означает разделение строки относительно некоторого разделителя (разделителей). Есть много способов этого добиться.
Рассмотрим пример с функцией strtok(). Она разбивает строку по указанным разделителям и должна быть вызвана в цикле, на каждой итерации возвращая следующую часть. В конце возвращает NULL.
SDL
Простая, удобная, кроссплатформенная библиотека как для создания 2D игр, так и для пользовательских приложений, имеются инструменты для профессиональной работы со звуком.
https://www.libsdl.org/
#вопросы_с_собеседований
Какие специальные функции-члены может генерировать сам компилятор? Напишите их сигнатуру?
Ответ:
Компилятор может сам генерировать шесть функций.
• Конструктор по умолчанию;
Object();
• деструктор;
~Object();
• копирующий конструктор;
Object(const Object& oth);
• оператор копирующего присваивания;
Object& operator=(const Object& oth);
• перемещающий конструктор;
Object(Object&& oth);
• оператор перемещающего присваивания;
Object& operator=(Object&& oth);
#вопросы_с_собеседований
Что лучше: const или define?
Ответ:
define - это директива препроцессора, которая не учитывает ни типов, ни областей видимости. Препроцессор вставляет значение везде, где оно используется и создается множество копий 3.14159265359 в объектном коде, константа никогда не порождает больше одной копии этого значения. define трудно отлаживать, потому что у него нет имени, только магическое число, нельзя взять адрес или создать ссылку на это значение.
У const есть тип, область видимости, можно взять адрес, создать константную ссылку на эту переменную.
Определенно, лучше использовать const, а не define.
Метод map::emplace_hint
Аналогичен методу emplace(), но дополнительно позволяет подсказать позицию вставки с помощью итератора. Метод возвращает итератор на вставленный элемент или на существующий элемент (вставить элемент с одинаковым ключом нельзя).
Как работать с атомарными типами данных в C++
https://habr.com/ru/company/ncloudtech/blog/694284/
Структура представлена в виде массива f, в котором f[i] – сумма всех элементов от F[i] до i. Функция F(x) связана с битовым представлением аргумента. Вкратце можно описать так: F(x) заменяет группу единичных битов, находящихся в конце числа (младших) на нули. Если x заканчивается на нулевой бит, то F(x) = x. В битовых операциях F(x) задаётся так: F(x) = x & (x + 1).
Нам понадобятся три функции: прибавление x к элементу с индексом i, получение суммы дерева от 0до xи получение суммы на [a..b].