Библиотека C/C++ разработчика | cpp, boost, qt
20.9K subscribers
1.57K photos
41 videos
16 files
3.74K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Наши каналы: https://yangx.top/proglibrary/9197

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
加入频道
Blur Behind: главное о спецэффекте, провалы на разных ОС (Linux, Windows, macOS), рабочие способы реализации и использование Qt Framework исключительно с применением классического QWidget-based-подхода.

https://habr.com/ru/companies/vk/articles/735716/
FlexFlow

Распределенная среда глубокого обучения, поддерживающая гибкие стратегии распараллеливания.

Читать статью
IEEEXtreme — 24-ех часовое соревнование по программированию, в котором участникам предлагается решать разнообразные задачки. Недавно был проведен эксперимент, в котором нейросеть ChatGPT принимала участие в соревновании, причем тестировали три языка: Java, C++ и Python. Результат печальный: в среднем человек оказывается в 3-5 раз более успешным, а на advanced уровне эффективность ChatGPT падает в 23 раза. При этом разница между 4 и 3.5 версией нейросети практически отсутствует.

Восстание машин отменяется?
Ускорение вставки отсортированного (или в основном отсортированного) списка ключей в std::map или другой упорядоченный ассоциативный контейнер

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

Читать статью
set::erase()

Функция erase() используется для удаления элементов из контейнера по указанной позиции или диапазону.
📱AR-технологии: что такое визуальное позиционирование

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

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
Что дают разные модификаторы при наследовании?

Ответ:
Изменяют зону видимости членов базового класса.
При private наследовании protected и public члены становятся private. При protected наследовании public становится protected. А при public ничего не изменяется.
🦠 Пишем «вирус» на C++

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

https://youtu.be/Fi1BJr6xtq0
Алгоритм accumulate

Возвращает сумму всех значений, лежащих в диапазоне между [first, last) с переменной init.
#вопросы_с_собеседований
Что выведет код сверху?

Ответ: “Constructor called” 5 раз и затем “Destructor called” 5 раз.

В приведенной выше программе мы сначала инициировали переменные с пятью указателями, используя ключевое слово new, следовательно, после этого будет вызван конструктор fives time, поскольку мы используем delete[] (используется для удаления нескольких объектов) для удаления переменных, следовательно, все созданные пять объектов будут уничтожены и, следовательно, будет вызван деструктор five times.
Алгоритм upper_bound

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

Элементы в диапазоне должны быть уже отсортированы или, по крайней мере, разделены по значению val.
В чем различия между dynamic_cast и reinterpret_cast?

Правильный ответ может звучать так:

Динамическое приведение — это безопасное приведение по иерархии наследования, в том числе и для виртуального наследования. Проводит преобразование типа, предварительно убедившись (с помощью RTTI), что объект expression_from в действительности является объектом типа type_to. Если нет: для указателей возвращает NULL.

При reinterpret_cast результат не гарантирован, проверки не осуществляются.
Ограничения на expression_from: порядковый тип (логический, символьный, целый, перечисляемый), указатель, ссылка.
Ограничения на type_to: для порядкового типа или указателя — порядковый тип или указатель. Для ссылки — ссылка.

#вопросы_с_собеседований
60 антипаттернов для С++ программиста, часть 1 (совет 1 — 5)

Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

Читать статью
Джуны в шоке, какие таблицы ведут тимлиды. А вы прошли бы такой отбор?
#интерактив
⚗️ 5 областей применения линейной алгебры в программировании

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

Читать статью
Метод difftime()

Метод difftime() используется для вычисления разницы между двумя значениями времени в секундах.

Подробнее можно почитать здесь.
#код
Узнаем размер файла с помощью C++

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

Автор учит писать событийные графические программы с анимированной 2D графикой, используя модуль QtGui библиотеки Qt. В статье описаны основы — в конце вы создадите движущийся по синусоиде шарик.

Читать статью
Декодирование процесса компиляции C/C++: от исходного кода к бинарному

Вы когда-нибудь задумывались, что происходит за кулисами, когда вы пишете программу на C? Как ваш код превращается из строк текста в полнофункциональный двоичный исполняемый файл? Если вам интересно узнать о тонкостях процесса компиляции программы на C, эта статья для вас.

Читать статью
Узнаем версию C++

Можно использовать макрос __cplusplus для определения версии C++. Например, если препроцессор увидит значение __cplusplus, равное 199711L, это означает, что используется C++98; значение 201103L указывает на C++11 и так далее.
#код