Senior C++ Developer
11.5K subscribers
1.52K photos
3 videos
646 links
Изучаем C++.

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

РКН: https://www.gosuslugi.ru/snet/676e9a1e4e740947beca35ba
Download Telegram
Перемешиваем элементы массива

На картинке представлены 2 варианта, с помощью которых вы можете с легкостью перемешать элементы своего массива
Claude начал банить россиян по паспорту

Anthropic массово просит пройти верификацию по документам. После российского загранпаспорта аккаунт блокируют практически сразу. Апелляции не помогают.

А в CatCode паспорт никто не спросит.

CatCode - десктопный ИИ-агент для разработки. Внутри Claude Fable, GPT, Grok и еще 10+ моделей в одной подписке. Модель можно выбрать вручную или доверить умному свитчеру: рутину он отдаст простой нейросети, сложную задачу - сильной, так лимит тратится медленнее.

Оплата российской картой или СБП, работает без VPN. Первые задачи бесплатно - просто зарегистрируйся и попробуй.

Перенеси проекты и не бойся банов: catcode.dev
Кодогенератор Waffle++ для C++

Кодогенератор это программа, которая на основе исходного кода или какого-нибудь файла настроек генерирует вспомогательный код, который потом компилируется вместе с исходным кодом.

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

Допустим, у вас есть выражение, значение которого нужно вычислить и которое не будет меняться после этого. Вы можете вычислить значение заранее и использовать его как макрос. Или, как предлагает C++11, вы можете использовать constexpr.

Программисты сокращают время работы программы насколько возможно. Например, некоторые операции перекладываются на компилятор.

Код выше — довольно частый пример использования constexpr.

Так как мы объявили функцию вычисления чисел Фибоначчи как constexpr, компилятор вычислит значение fib(20) во время компиляции. Тогда после компиляции строка const long long bigval = fib(20); будет заменена на const long long bigval = 2432902008176640000.
Алгоритм unique_copy

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

Но что, если мы не хотим изменять исходный диапазон, а просто хотим, чтобы результат std::unique был скопирован в другой контейнер, для этого у нас есть другая функция std::unique_copy() . При этом копируется только первый элемент из каждой последовательной группы эквивалентных элементов в диапазоне [first, last).
Принцип YAGNI

Принцип YAGNI (You Ain't Gonna Need It), который также известен как «Не добавляйте функциональность, пока она не понадобится».

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

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

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

std::weak_ptr в C++ это часть стандартной библиотеки C++, которая используется для работы с умными указателями (smart pointers) и предназначена для решения проблемы циклических ссылок (cyclic references), которая может возникать при использовании std::shared_ptr.

Использование std::weak_ptr полезно в ситуациях, где существует потенциальная циклическая зависимость между объектами, и вы хотите избежать утечек памяти, связанных с этими зависимостями.

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

MXNet — это высокопроизводительная библиотека глубокого обучения с открытым исходным кодом, поддерживающая различные языки программирования, включая C++. Она предлагает широкий набор функций для создания, обучения и развертывания нейронных сетей.

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

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

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

audioFlux — это библиотека C++ с открытым исходным кодом для работы со звуком. Она предоставляет простой и удобный интерфейс для выполнения различных задач, связанных с обработкой аудио.

#для_продвинутых
Google вновь ограничил россиянам доступ к Gemini

Уже несколько дней на сайтах мониторинга продолжаются жалобы пользователей. Похоже, Google научился распознавать регион - не спасает даже VPN.

А в CatCode все топовые нейросети доступны без VPN.

CatCode - десктопный ИИ-агент для разработки. Внутри Claude Fable, GPT, Grok и еще 10+ моделей в одной подписке. Модель можно выбрать вручную или доверить умному свитчеру: рутину он отдаст простой нейросети, сложную задачу - сильной, так лимит тратится медленнее.

Оплата российской картой или СБП, работает без VPN и верификации. Первые задачи бесплатно - просто зарегистрируйся и попробуй.

Перенеси проекты туда, где не ограничат доступ: catcode.dev
➡️ Управление ресурсами с помощью std::scoped_lock для нескольких мьютексов

В C++17 был представлен std::scoped_lock, который позволяет одновременно захватывать несколько мьютексов, гарантируя отсутствие взаимных блокировок (deadlocks).

• Этот класс позволяет безопасно и одновременно захватывать несколько мьютексов. В отличие от использования std::lock_guard, который захватывает один мьютекс, std::scoped_lock предотвращает взаимные блокировки, которые могут возникнуть при попытке захвата нескольких мьютексов в произвольном порядке.

• std::scoped_lock полезен в ситуациях, когда нужно гарантировать атомарность операций над несколькими разделяемыми ресурсами, минимизируя риск deadlock'ов.

• При выходе из области видимости, std::scoped_lock автоматически отпускает все захваченные мьютексы, обеспечивая безопасное управление ресурсами.
Please open Telegram to view this post
VIEW IN TELEGRAM