seniorcpp | Unsorted

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

13626

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

Subscribe to a channel

Senior C++ Developer

Алгоритм inner_product

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

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

Senior C++ Developer

🔥 Qt остаётся одним из самых востребованных инструментов для создания кросс-платформенных приложений. Хотите научиться писать программы, которые действительно работают и востребованы в бизнесе?

Приглашаем на бесплатный открытый урок «Пишем приложение органайзер на Qt»

🗓 6 октября, в 20:00 мск.
🆓 Бесплатно. Урок в рамках старта курса «Разработка прикладного ПО на Qt и ОС «Аврора»».
Регистрация: https://otus.pw/hSko/

✔️ Разберем процесс создания приложения-органайзера с нуля, используя популярный фреймворк Qt.
✔️ Вы узнаете, как разрабатывать пользовательский интерфейс с помощью основных инструментов Qt.
✔️ В ходе занятия вы получите практические навыки работы с сигналами и слотами, проектированием архитектуры приложения, подбором структуры данных и т.д..

🔗 Ссылка на регистрацию: https://otus.pw/hSko/

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

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

Senior C++ Developer

Функция minmax_element

Находит самый маленький и самый большой элемент в диапазоне [first, last).

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

Senior C++ Developer

Корутины C++ для чайников: пишем асинхронный веб-клиент

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

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

Senior C++ Developer

#вопросы_с_собеседований
Как можно использовать лямбда-выражения в C++ для создания анонимных блоков кода, которые могут изменять переменные захваченного контекста без изменения сигнатуры лямбды?


В C++ можно использовать лямбда-выражения с захватом по ссылке, чтобы анонимный блок кода мог изменять переменные из внешнего контекста. Захват по ссылке указывается с помощью символа & в списке захвата лямбды. Это позволяет лямбде изменять значения переменных, не меняя при этом сигнатуру лямбды.

В этом примере лямбда modifyX захватывает переменную x по ссылке и изменяет её значение. Такой подход позволяет лямбдам влиять на состояние переменных в области видимости, где они были определены, без необходимости изменять сигнатуру лямбды.

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

Senior C++ Developer

Функция std::find_end

Функция std::find_end в С++ используется для поиска последнего вхождения подпоследовательности элементов в заданном диапазоне. Она работает с итераторами, что делает её универсальной для различных контейнеров, таких как массивы, векторы, списки и т.д.

Синтаксис:

template < class ForwardIterator1, class ForwardIterator2 >
ForwardIterator1 find_end ( ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2 );


#для_продвинутых

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

Senior C++ Developer

#вопросы_с_собеседований
Как работает механизм перегрузки операторов в C++ и какие ограничения существуют при его использовании?


В C++, перегрузка операторов позволяет программистам определять поведение стандартных операторов (например, +, -, *, /) для пользовательских типов данных. Это делается путем определения функций или методов класса с специальным именем: operatorX, где X - это оператор, который нужно перегрузить. Однако существуют ограничения: нельзя перегружать операторы для встроенных типов данных (только если одним из операндов является пользовательский тип), нельзя создавать новые операторы, и некоторые операторы (например, ?:, .) не подлежат перегрузке. Перегрузка операторов должна использоваться с осторожностью, чтобы не нарушить интуитивные ожидания от работы этих операторов.

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

Senior C++ Developer

Библиотека <pty.h>

Библиотека <pty.h> используется для работы с псевдотерминалами (PTY — Pseudo Terminal). Псевдотерминалы предоставляют средство для создания пары устройств, одно из которых может использоваться как мастер (master), а другое как рабочее (slave). Процессы могут обмениваться данными между этими устройствами, эмулируя терминальные взаимодействия.

#для_начинающих

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

Senior C++ Developer

Функция div()

Функция div() вычисляет величину numerator/denominator и возвращает частное и остаток в структуре div_t, которая содержит два целочисленных поля (в неопределённом порядке) quot и rem. Частное округляется до ближайшего нуля. Результат равняется quot*denominator+rem = numerator.

Функции ldiv(), lldiv() и imaxdiv() выполняют эту же функцию, деля числа соответствующего типа и возвращая результат в структуре с соответствующим именем, всегда с полями quot и rem того же типа, что и аргументы функции.

#для_начинающих

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

Senior C++ Developer

Узнаем размер файла с помощью C++

В этом примере мы открываем файл example.txt с помощью ifstream, перемещаем указатель на конец файла с помощью функции seekg, а затем получаем текущую позицию (размер файла) с помощью функции tellg. Результат выводится на экран.

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

Senior C++ Developer

Видеоуроки по созданию игры на C++

Серия видео, в которой автор по шагам рассказывает, как написать свою игру на C++.

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

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

Senior C++ Developer

#вопросы_с_собеседований
Какие специальные функции-члены может генерировать сам компилятор? Напишите их сигнатуру?

Ответ:
Компилятор может сам генерировать шесть функций.

• Конструктор по умолчанию;
Object();
• деструктор;
~Object();
• копирующий конструктор;
Object(const Object& oth);
• оператор копирующего присваивания;
Object& operator=(const Object& oth);
• перемещающий конструктор;
Object(Object&& oth);
• оператор перемещающего присваивания;
Object& operator=(Object&& oth);

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

Senior C++ Developer

Удаление всех вхождений элемента в массив

В этом методе сдвиньте нецелевой элемент в левую сторону.

• Проверьте, является ли текущий элемент целевым элементом или нет.
• Если это целевой элемент, увеличьте переменную cnt.
• После этого элемента все нецелевые элементы сдвинутся влево с промежутком (n-cnt).

Временная сложность: O(n)
Сложность пространства: O(1)

На картинке приведена программа на C ++ для удаления всех вхождений элемента из массива с использованием оптимизированного подхода.

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

Senior C++ Developer

Быстрое нахождениe остатка от деления больших чисел для делителей специального вида

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

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

Senior C++ Developer

➡️ Злой друг программиста: переопределение ключевых слов

Переопределение ключевых слов — плохая практика программирования, но это возможно через препроцессор. Это может вводить баги, например, #define true false или #define else.

#define int float
#define float char


Такой код будет работать, хотя это может быть полезно в некоторых ситуациях. Например, если мы используем большую библиотеку и не хотим публичного наследования, мы можем временно отключить защиту доступа перед подключением заголовков библиотеки, а затем снова включить её.

#define public private
#include "mylibrary.h"
#undef private


Это позволяет управлять доступом к библиотеке без её изменения, но требует осторожности.

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

Senior C++ Developer

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

Ответ:
4294967271, предполагая 32-битные целые числа.

Почему так происходит?

Существует иерархия: long double, double, float, unsigned long int, long int, unsigned int, int. И когда два операнда определены как 25u (unsigned int) и 50 (int), 50 также будет интерпретироваться как беззнаковое целое число, то есть 50u.

Кроме того, результат операции также будет иметь тип операндов. Следовательно, результат 25u - 50u и сам является беззнаковым целым числом. Таким образом, результат -25 преобразуется в 4294967271.

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

Senior C++ Developer

Пример UB (Undefined behavior)

Ярким примером UB и ошибочного кода является повторное использование (в том числе повторное изменение) изменяемой переменной при вычислении выражения, когда относительный порядок вычисления термов не определен (то же касается фактических параметров функции в точке вызова).

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

Senior C++ Developer

⚠️ WMI — это не только удобный инструмент администратора, но и один из самых скрытных векторов атак в Windows.

🔎 На открытом вебинаре вы узнаете, как работают такие атаки и как вовремя их выявлять.

Разберем:

- Что такое WMI и как он применяется в администрировании.
- Почему WMI так любят злоумышленники.
- Какие методы мониторинга помогают обнаружить скрытные атаки.

📅 Урок пройдёт 6 октября в 20:00 МСК в преддверии старта курса «Reverse Engineering». Присоединяюсь и получите скидку на обучение: https://otus.pw/crgG/

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

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

Senior C++ Developer

Функция std::stold

Функция std::stold из стандартной библиотеки C++ преобразует строку, представляющую десятичное число с плавающей запятой, в тип long double.

Возвращаемое значение:
Возвращает значение типа long double, полученное из преобразованной строки.

#для_начинающих

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

Senior C++ Developer

Функция std::atomic_store

Функция std::atomic_store используется для атомарного изменения значения атомарной переменной. Это означает, что изменение значения происходит мгновенно и не может быть прервано другими потоками.

В примере на картинке функция atomic_store используется для атомарного увеличения значения счетчика counter на 1. Функция atomic_load используется для получения нового значения счетчика.

#для_продвинутых

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

Senior C++ Developer

Функция std::count

Функция std::count используется для подсчета количества элементов в диапазоне, которые совпадают с заданным значением. Она работает с итераторами, что позволяет использовать ее с различными типами контейнеров, таких как массивы, векторы, списки и т.д.

#для_начинающих

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

Senior C++ Developer

«Код-ревью — это когда твои комментарии в интернете действительно читают»: дискуссия с разработчиками на C++

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

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

Senior C++ Developer

Функция ptsname()

Функция ptsname() возвращает имя подчиненного псевдотерминального устройства, соответствующего главному устройству, на которое ссылается файловый дескриптор fd.

Функция ptsname_r() является реентерабельным эквивалентном ptsname(). Она сохраняет имя устройства подчинённого псевдо-терминала в виде строки (завершающейся null) в буфер, указанный в buf. В аргументе buflen задаётся количество байт, доступных в buf.

#для_начинающих

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

Senior C++ Developer

Интервью на C ++ с инженером Google: Closest Coin (с русскими субтитрами)

Смотреть видео

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

Senior C++ Developer

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

Ответ:
10 99 40 99

В этой программе мы меняем местами определенные значения в двух векторах с помощью iter_swap.

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

Senior C++ Developer

⁉️Хотите, чтобы интерфейсы ваших приложений выглядели профессионально и динамично, а пользовательский опыт стал на порядок выше?

🎓Qt — это мощный инструмент, а QtStateMachine открывает новые возможности для построения логики и создания сложных анимаций. На открытом уроке мы разберём, как моделировать поведение интерфейса с помощью состояний и переходов, и шаг за шагом создадим несколько анимаций.

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

➡️ Регистрируйтесь на открытый урок курса «Разработка прикладного ПО на Qt и ОС „Аврора“» 22 сентября в 20:00. Участники получат скидку на обучение: https://otus.pw/QHZS/


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

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

Senior C++ Developer

Алгоритм compare

Если вызывающая строка меньше строки s, то функция возвращает -1 (отрицательное значение). Если вызывающая строка больше строки s, функция возвращает 1 (положительное значение). Если две строки равны, функция возвращает 0.

Подробнее про алгоритм можно почитать здесь.

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

Senior C++ Developer

Туториал по Unreal Engine: C+

Blueprints — очень популярный способ создания геймплея в Unreal Engine 4. Однако если вы уже давно программируете и предпочитаете код, то вам идеально подойдёт C++. С помощью C++ можно даже вносить изменения в движок и создавать собственные плагины.

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

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

Senior C++ Developer

Конференция о бэкенде: исследуем технологии, изменившие мир!

4 октября в Москве и онлайн состоится конференция «Я про бэкенд». Мы соберем на одной площадке экспертов, создающих сервисы, которые преобразуют цифровое пространство и приносят пользу людям через современные рекомендательные и генеративные технологии. На докладах будут рассмотрены вызовы в бэкенд-разработке, связанные с ростом нагрузки, развитием машинного обучения и стремлением к улучшению пользовательского опыта.

Список докладов:
-Антон Полднев (Яндекс Реклама): как рекомендательный движок ежегодно экономит 200 тыс. CPU в инфраструктуре Рекламы
-Дмитрий Погорелов (VK): эволюция рекомендательного движка VK и перезапуск ленты во ВКонтакте
-Михаил Чебаков (T-Банк): как упростить сложность LLM-инференса с помощью понятных метрик
-Андрей Шукшов (Яндекс Поиск): внутри LLM: оптимизация decoder attention на GPU
-Алёна Васильева (Шедеврум): архитектура для ML-моделей и длинный инференс
-Никита Сикалов (Яндекс Поиск): эволюция технологий реалтайм-индексации

Полную программу можно найти на сайте.
Зарегистрироваться на конференцию

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

Senior C++ Developer

💾 Память в C без страха и ошибок
📅 15 сентября | 20:00 мск | бесплатно

На вебинаре разберём:
🆚 Стек vs куча и почему нельзя возвращать локальные массивы
🛠 malloc, calloc, realloc, free — правильное выделение и освобождение памяти
🔍 Как ловить утечки и избегать висячих указателей

Полезно для:
💡 Разработчиков, которые хотят уверенно управлять памятью в C и писать надёжный код

👉 Регистрируйтесь:

https://otus.pw/FXll/

Занятие приурочено к старту курса "Программист С", обучение на котором позволит не только глубоко погрузиться в возможности языка С, но и изучить низкоуровневые особенности устройства UNIX-совместимых ОС и ОС семейства Windows

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

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