C++ Learning
10.7K subscribers
1.48K photos
4 videos
7 files
1.03K links
№ 4974310652

Обучающий канал по C++

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Learning_pluses
Download Telegram
🚫 Антипаттерн недели: Отсутствие const для неизменяемых данных

В C++ использование const помогает защитить данные от непреднамеренных изменений, делает код понятнее и позволяет компилятору оптимизировать работу программы.

✔️ Добавляйте const, если переменная, параметр или метод не должны изменяться.

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ std::source_location::current()

std::source_location::current() (C++20) позволяет получить информацию о месте вызова функции, включая имя файла, номер строки и название функции. Это удобно для логирования, отладки и трассировки кода.

🔗 Документация

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ std::launder()

std::launder() (C++17) используется для корректного доступа к объектам после изменения их типа через размещённое new. Это необходимо при работе с низкоуровневой оптимизацией, аллокаторами и изменяемыми объектами.

🔗 Документация

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ std::experimental::sample

std::experimental::sample (C++17) позволяет случайным образом выбрать элементы из контейнера без необходимости перемешивания всей последовательности. Это удобно для случайной выборки данных в эффективном режиме.

🔗 Документация

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики, поздравляю вас с наступающим новым годом! Пусть в 2026 году исполнятся все ваши самые заветные желания🎄🎄🎄🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ std::filesystem::unique_path()

std::filesystem::unique_path() генерирует случайное имя файла или директории с заданным шаблоном. Это полезно для создания временных файлов без конфликтов имён.

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ std::atomic_signal_fence()

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

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ std::unordered_map::emplace_hint()

std::unordered_map::emplace_hint() позволяет вставлять элементы в хеш-таблицу с подсказкой для оптимизации. Это особенно полезно, если известно, куда примерно должен встать новый элемент, ускоряя операцию вставки.

🔗 Документация

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ std::move_only_function

std::move_only_function (C++23) — это аналог std::function, но с поддержкой только перемещаемых (не копируемых) замыканий. Полезно для высокопроизводительных сценариев и перемещаемых лямбд с захваченными уникальными ресурсами (std::unique_ptr, сокеты и т.д.).

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ std::stacktrace

std::stacktrace (C++23) позволяет получить стек вызовов прямо во время выполнения. Это полезно для логирования, отладки, генерации crash-репортов и встроенных диагностик — прямо в продакшене.

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ std::is_constant_evaluated()

std::is_constant_evaluated() (C++20) позволяет определить, выполняется ли код в рамках constexpr-вычисления. Это полезно для написания функций, ведущих себя по-разному на этапе компиляции и выполнения.

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ std::bit_width()

std::bit_width() (C++20) возвращает минимальное количество бит, необходимое для представления значения. Это полезно при работе с битовыми структурами, алгоритмами сжатия, хэшированием и оптимизацией памяти.

C++ Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM