seniorcpp | Unsorted

Telegram-канал seniorcpp - Senior C++ Developer

13626

Изучаем C++. По вопросам сотрудничества: @adv_and_pr

Subscribe to a channel

Senior C++ Developer

Вывод параметра шаблона класса

Довольно странное название функции, да? Её суть в том, что с C++17 компилятор может сам определять типы аргументов конструкторов стандартных классов. Раньше же это работало лишь для функций.

Для того, чтобы осознать удобство этой функции, нужно быть знакомыми с конструкторами классов в C++.

Читать полностью…

Senior C++ Developer

Является ли число степенью двойки

Мы можем проверить, является ли число степенью двойки или нет напрямую, используя код выше. :D

Читать полностью…

Senior C++ Developer

Использование emplace_back вместо push_back

В C++ 11 emplace_back работает так же, как push_back, добавляя элементы в конец вектора. emplace_back работает быстрее, так как push_back сначала создает временную переменную, а затем добавляет ее в конец вектора.

Читать полностью…

Senior C++ Developer

malloc стал безопасен

В предыдущих версиях использование низкоуровневых функций, унаследованных из языка Си, не рекомендовалось. Проблема в том, что Си оперирует байтами, а в С++ происходит работа с объектами со своим временем жизни и областью видимости. До С++ 20 время жизни объекта начиналось после вызова оператора new. В новой версии все изменилось — принято считать, что набор низкоуровневых функций — memcpy, memmove, malloc, aligned_alloc, calloc, realloc, bit_cast, начинает время жизни объекта. Т. е. следующий код(см картинку) будет валиден.

Т. е. у нас появляется обратная совместимость с языком Си, но относительно С++ в новой трактовке.

Читать полностью…

Senior C++ Developer

Избавляемся от макросов

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

Как мы видим, код становится более единообразным, в одном стиле, с расширяемым функционалом.

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
Для чего используется ключевое слово volatile?

Для указания компилятору, что доступ к переменной может осуществляться из мест, неподконтрольных ему. А как следствие, что работу с данной переменной не нужно подвергать разного рода оптимизациям.

Т.е. если volatile присутствует в каком-то условии, которое не меняется со временем, то компилятор может оптимизировать его, чтобы избежать ненужных проверок, при использовании volatile компилятор скорее всего не будет этого делать.

Читать полностью…

Senior C++ Developer

🧑🏻‍💻Хотите писать безопасный, масштабируемый и читаемый код на современном C++?

Актуальное повышение квалификации «C++ Developer. Professional» создано для тех, кто хочет выйти за пределы базового синтаксиса и овладеть актуальными практиками разработки — от C++20 и C++23 до многопоточности, шаблонов и сетевого взаимодействия.

Программа составлена практикующими разработчиками и обновляется с учётом требований индустрии. Вы выполните 14 практических заданий, отработаете паттерны проектирования, оптимизацию, работу с памятью и получите диплом, который котируется в ведущих IT-компаниях.

⚡️Набор закрывается совсем скоро, это последний шанс пройти вступительное тестирование и получить скидку на обучение: https://otus.pw/fXvq/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Senior C++ Developer

⚙️Уже работаете с Rust, но хотите эффективно интегрировать его с другими языками? Или интересуетесь, как устроен процесс сборки и линковки в этом языке?

🗓На открытом вебинаре 24 апреля в 20:00 мск мы подробно разберем, как собирать и линковать библиотеки в Rust, как использовать Rust-библиотеки в других языках, а также реализуем Си ABI (Application Binary Interface). Вы получите знания, которые помогут вам повысить производительность ваших проектов и интегрировать Rust в существующие решения.

👨‍💻Урок будет полезен всем, кто хочет углубить свои знания в Rust, повысить квалификацию и навыки работы с библиотеками и системами. Вы сможете применять полученные знания в реальных проектах.

👉Присоединяйтесь к открытому вебинару и получите скидку на большое обучение «Rust Developer. Professional»: https://otus.pw/VkfH/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Senior C++ Developer

Макрос watch

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

При отладке кода watch(переменная) выведет имя переменной и её значение.

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
В чем разница между struct и class?

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

Читать полностью…

Senior C++ Developer

Алгоритм set_symmetric_difference

Строит отсортированную последовательность из элементов, которые встречаются только в первой последовательности [first1, last1) или только во второй - [first2, last2).

Читать полностью…

Senior C++ Developer

Алгоритмы all_of, any_of и none_of

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

Читать полностью…

Senior C++ Developer

Создаем сложные интерфейсы и спецэффекты на базе Qt. Часть I

Смотреть статью

Читать полностью…

Senior C++ Developer

🧟Зомби-апокалипсис: создаем противников в стиле Days Gone

На этом уроке вы добавите в свой проект зомби-противников, которые будут угрожать вашему персонажу. Мы разберем, как добавить нового персонажа, настроить его анимации, реакцию на урон и передвижение по уровню на движке Unreal Engine 5. Вы узнаете, как создать атмосферу напряженности и вызова, как в Days Gone.

Основные темы:
- добавление нового персонажа в проект
- добавление анимации в персонажа
- добавление реакции на урон
- настройка передвижения по уровню

👉 Регистрация и подробности о курсе "Unreal Engine Game Developer. Basic": https://otus.pw/XVYY/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Senior C++ Developer

Строковые литералы как параметры шаблона

Начиная с C ++ 20, вы можете использовать строку в качестве параметра шаблона, не являющегося типом. Идея состоит в том, чтобы использовать стандартную строку basic_fixed_string, которая имеет конструктор constexpr. Конструктор constexpr позволяет ему создать экземпляр фиксированной строки во время компиляции.

Вроде бы мелочь, а приятно — не нужно производить обходных маневров и использовать лишнюю память.

Читать полностью…

Senior C++ Developer

Стань частью масштабного ИТ-события от МТС

True Tech Day 2025 — третья технологическая конференция МТС для профессионалов ИТ‑индустрии. Одна из главных тем в этом году — тренды и практики искусственного интеллекта.

В программе:
— Доклады от ученых и зарубежных спикеров с индексом Хирша более 50.
— Кейсы применения современных ИИ‑решений — от AI‑агентов, тестов LLM и бенчмарков до вопросов регулирования.
— AI-интерактивы и технологические квесты.
— Пространство для нетворкинга,
…а еще after-party со звездным лайн-апом.

Когда: 6 июня
Где: Москва, МТС Live Холл и онлайн
Участие бесплатно. Регистрируйся по ссылке.

Читать полностью…

Senior C++ Developer

🧑🏻‍💻Хотите научиться писать нейросети на одном из самых быстрых и безопасных языков программирования?

На открытом уроке 6 мая в 20:00 МСК мы научим вас создавать простейшую нейросеть с нуля, используя минимальные библиотеки. Вы не только познакомитесь с Rust, но и узнаете, как оптимизировать вычисления для работы с нейронными сетями.

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

👉Присоединяйтесь к открытому уроку и получите скидку на программу обучения «Rust Developer. Basic»: https://otus.pw/bGCy/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Senior C++ Developer

Алгоритм copy_n

Используется для копирования элементов из одного контейнера в другой.

Читать полностью…

Senior C++ Developer

Хочешь не просто писать код, а строить фундамент всей транспортной логики 2ГИС? Присоединяйся!

В команде Transport Core мы соединяем алгоритмы и интерфейсы, чтобы маршруты в приложении были быстрыми, понятными и живыми.

Что будешь делать:
• Реализовывать бизнес-логику маршрутов: авто, пешком, общественный транспорт
• Прокладывать маршруты, привязывать геопозицию, отображать линии движения
• Делать UI-экраны проезда, запускать дикторов, настраивать курсоры
• Будешь мостом между алгоритмами и фронтом — всё, чтобы навигация была умной и понятной

Что получаешь:
• C++20, сборка под Windows, Linux, macOS, Android, iOSGit, CI, кроссплатформенность и хороший продакшн-процесс
• Команду, где ценят чистоту кода и обязательное code-review
• Гибкость: офис или удалёнка, разные часовые пояса, всегда на связи

Хочешь влиять на то, как люди добираются до цели?Тогда ты нам нужен откликайся здесь

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
В чем отличие vector от deque?

Ответ: Здесь вспоминают о наличии у deque методов push_front и pop_front. Но основное отличие в организации памяти, у vector она как у обычного Си-массива, т.е. последовательный и непрерывный набор байт, а у deque это фрагменты с разрывами. За счет этого отличия vector всегда можно привести к обычному массиву или скопировать целиком участок памяти, но зато у deque операции вставки/удаления в начало быстрее (O(1) против O(n)), ввиду того, что не нужно перемещать.

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
Что такое чисто виртуальный метод и абстрактный класс?

Ответ: Чисто виртуальный метод — это метод, у которого отсутствует реализация. Абстрактный класс — это класс имеющий хотя бы один чисто виртуальный метод. Как следствие, экземпляр подобного класса не может быть создан т.к. отсутствует реализация виртуального метода.

Читать полностью…

Senior C++ Developer

Сортировка пузырьком

Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного массива.

Формат входных данных:
На первой строке дано целое число n (1 ≤ n ≤ 1000) – количество элементов в массиве. На второй строке – сам массив. Гарантируется, что все элементы массива – различные целые числа, не превышающие по модулю 10^9.

Формат выходных данных:
Выведите одно число – количество обменов пузырьковой сортировки.

Читать полностью…

Senior C++ Developer

init внутри if и switch

Эта возможность C++17 мне полюбилась сразу же, как только я узнал о ней.

Теперь вы можете инициализировать переменные и проверять условия сразу же внутри блоков if и switch. Это помогает сохранять код понятным и чистым.

Читать полностью…

Senior C++ Developer

🧑🏻‍💻Как эффективно управлять ошибками в коде и избегать багов?

На открытом вебинаре 23 апреля в 20:00 МСК вы познакомитесь с мощной системой обработки ошибок в Rust и узнаете, почему этот подход считается одним из самых безопасных и надёжных. Вместе с экспертом вы освоите оператор «?» и работу с типами Result и Option.

Вы получите практические навыки и сможете легко писать код без неожиданных сбоев и исключений, повысив надежность ваших приложений.

👉Регистрируйтесь на вебинар и получите специальную скидку на полный курс «Rust Developer. Basic»: https://otus.pw/mfo4/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Senior C++ Developer

Для чего нужен аллокатор и как создать свой собственный аллокатор?

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

Читать полностью…

Senior C++ Developer

Как написать «Змейку» на C++ в четыре переменные?

Пишем классическую «Змейку», как на КДПВ, в четыре переменные.

Смотреть статью

Читать полностью…

Senior C++ Developer

Что не так с кодом в Капибаровске?

Узнайте на T-CTF — соревновании от Т-Банка для опытных ИТ-специалистов. Решайте задания по спортивному хакингу с шансом выиграть приз до 420 000 ₽.

Вот как все устроено:

— Выберите Лигу Разработки или Лигу Безопасности по своим навыкам. Если участвуете впервые, можно потренироваться на демозаданиях.
— Соревнуйтесь один или в команде до 3 человек. Вам помогут найти команду, если нет своей.
— Участвуйте онлайн или приходите в ИТ-хаб Т-Банка в одном из 6 городов России.
— Используйте время на решение заданий и общение с участниками — у вас будет 36 часов.

Задания будут интересны разработчикам, QA- и SRE-инженерам, аналитикам и другим ИТ-специалистам уровня middle и senior.

Успейте зарегистрироваться до 18 апреля.

Реклама. АО «ТБанк», лицензия ЦБ РФ № 2673, erid:2RanymhgQ6D

Читать полностью…

Senior C++ Developer

Генератор G-кода для 3D-принтеров (RepRap, Makerbot, Ultimaker и др.).

https://www.libhunt.com/r/PrusaSlicer

Читать полностью…

Senior C++ Developer

Кортеж — tuple

Как и pair, tuple — коллекция значений различных типов данных конкретного размера.

В некоторых случаях вместо tuple удобнее использовать std::array. Это обычный массив с некоторыми функциями стандартной библиотеки C++, который был добавлен в C++11.

Читать полностью…

Senior C++ Developer

Атрибуты [[likely]] и [[unlikely]]

В C++20 мы получили новые атрибуты [[likely]] и [[unlikely]], которые позволяют подсказывать оптимизатору, является ли путь выполнения более или менее вероятным.

Читать полностью…
Subscribe to a channel