Senior C++ Developer – Telegram
Senior C++ Developer
12.3K subscribers
1.36K photos
3 videos
610 links
Изучаем C++.

По вопросам сотрудничества: @adv_and_pr

РКН: https://www.gosuslugi.ru/snet/676e9a1e4e740947beca35ba
Download Telegram
SFML

SFML (Simple and Fast Multimedia Library) — одна из самых удобных и быстрых графических библиотек для C++. Её неоспоримое преимущество — минимальные требования к уровню знаний языка и лёгкость освоения: всего за несколько дней можно написать вполне полноценную программу. К примеру, первое графическое приложение «SFML works!» можно написать всего за минуту. Ещё одно преимущество — кроссплатформенность: SFML работает под Windows, Linux (только X11, но не Wayland) и Mac OS.

SFML библиотека используется по большей части небольшими стартапами и программистами, для которых создание игр — хобби. SFML популярен среди небольших команд благодаря тому, что разработка графической части программы не требует написания больших объёмов кода.

Попробуйте пройти начальный курс.
Макрос watch

Макрос watch — один из самых полезных приёмов.

При отладке кода watch(переменная) выведет имя переменной и её значение.
#вопросы_с_собеседований
В чем разница между struct и class?

Ответ: Практически ни в чем. В struct модификаторы доступа по умолчанию public, в class private. Также отличается и наследование по умолчанию, у struct — public, у class — private.
Общие хитрости для C++

Никогда не используйте INT_MAX в качестве бесконечности для целых чисел. В некоторых алгоритмах, например, Флойда–Уоршелла, используются значения вроде ∞+w, что приведёт к переполнению при использовании INT_MAX. Вместо этого лучше использовать int oo = 0x3f3f3f3f, поскольку:
• Это число достаточно большое для задач, связанных с целыми числами;
• 2 * oo не приведёт к переполнению;
• Все байты равны, поэтому вы без проблем можете использовать memset(array, oo, sizeof(array));
• Его довольно легко запомнить.

Однако будьте осторожны: не используйте 0x3f3f3f3f для long long, так как в таком случае фокус уже не пройдёт, и вы потом потратите кучу времени на поиск ошибки.
Алгоритм set_intersection

Создает отсортированную последовательность из элементов, встречающихся в обеих последовательностях – [first1, last1) и [first2, last2).
Для чего нужен аллокатор и как создать свой собственный аллокатор?

Аллокатор это шаблонный класс, который отвечает за выделение памяти и создание объектов. По умолчанию все контейнера используют std::allocator<T>.
В языке c++ имеется так же возможность написать свой аллокатор. У своего алокатора должно быть такое объявление(см картинку).
Запретный C++: знания, которые не должны были существовать

Так о C++ не рассказывал ещё никто. История длиной 30 минут, в которой вы узнаете о примерах кода на C++, воплощающих само Великое Зло.

02:00 Глобальные переменные.
08:00 Макросы.
12:36 Goto.
16:20 Указатель void *.
22:17 using namespace std.
27:19 New и Delete.

https://youtu.be/j0_u26Vpb4w
#вопросы_с_собеседований
Опишите выделение памяти и их отличия?

• Статическое выделение памяти - выделяется редактором связей и существует, пока выполняется программа;
• Память в стеке - автоматическая память. Выделяется при вызове функции для хранения локальных объектов и очищается автоматически после выхода этих объектов из зоны видимости, то есть после возвращения управления из функции;
• Память в куче - динамическая память. Объекты создаются с помощью оператора new и должны быть уничтожены с помощью вызова оператора delete самим программистом.
В какой строке есть ошибка компиляции?
Anonymous Quiz
29%
Во всех
17%
1
21%
2
15%
3
18%
Ни в какой
#вопросы_с_собеседований
Когда Вы должны использовать список инициализации?

Ответ:
1) когда в классе есть ссылки,
2) когда есть константы,
3) когда у базового и выведенного класса есть конструктор с набором аргументов.
Функция any_of

Эта функция проверяет заданный диапазон, если хотя бы один элемент удовлетворяет заданному свойству, указанному в функции. Возвращает true, если хотя бы один элемент удовлетворяет свойству, иначе возвращает false.

В приведенном выше коде -6 делает условие положительным.

Вывод: There exists a negative element
Функция find_first_of

Ищет в строке первый символ, который соответствует любому из символов, указанных в его аргументах.

Когда задан pos , поиск включает только символы в позиции pos или после нее , игнорируя любые возможные вхождения перед pos .
Функция unique

unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне [first, last). Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, имеющих один и тот же элемент, присутствующий последовательно.
Алгоритм fill

Присваивает всем элементам в диапазоне [first,last) заданное значение.
Задача: Встречалось ли число раньше

Во входной строке записана последовательность чисел через пробел. Для каждого числа выведите слово YES (в отдельной строке), если это число ранее встречалось в последовательности или NO, если не встречалось.
Задача

Напишите функцию, которая принимает вектор и удаляет из него нули, а ненулевые элементы оставляет в прежнем порядке. В реализации нельзя использовать циклы.
Задача

Для каждого из чисел второй последовательности найдите ближайшее к нему в первой.

В первой строке входных данных содержатся числа N и K (). Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2⋅10**9.

Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
Упорядочиваем 3 числа

С помощью функции swap переставляем 3 числа в порядке возрастания.