⚙️ std::generator
std::generator (C++23) позволяет создавать ленивые генераторы, которые вычисляют значения по требованию, аналогично yield в Python. Это удобно для обработки больших потоков данных без лишнего потребления памяти.
🔗 Документация (https://en.cppreference.com/w/cpp/coroutine/generator)
👩💻
@quizcpp
std::generator (C++23) позволяет создавать ленивые генераторы, которые вычисляют значения по требованию, аналогично yield в Python. Это удобно для обработки больших потоков данных без лишнего потребления памяти.
🔗 Документация (https://en.cppreference.com/w/cpp/coroutine/generator)
👩💻
@quizcpp
⚙️ std::filesystem::hard_link_count()
std::filesystem::hard_link_count() позволяет узнать, сколько жёстких ссылок у файла. Это полезно для работы с файловыми системами, проверки ссылок на один и тот же файл и анализа структуры директорий.
🔗 Документация (https://en.cppreference.com/w/cpp/filesystem/hard_link_count)
👩💻
@quizcpp
std::filesystem::hard_link_count() позволяет узнать, сколько жёстких ссылок у файла. Это полезно для работы с файловыми системами, проверки ссылок на один и тот же файл и анализа структуры директорий.
🔗 Документация (https://en.cppreference.com/w/cpp/filesystem/hard_link_count)
👩💻
@quizcpp
⚙️ std::unordered_map::emplace_hint()
std::unordered_map::emplace_hint() позволяет вставлять элементы в хеш-таблицу с подсказкой для оптимизации. Это особенно полезно, если известно, куда примерно должен встать новый элемент, ускоряя операцию вставки.
🔗 Документация (https://en.cppreference.com/w/cpp/container/unordered_map/emplace_hint)
👩💻
@quizcpp
std::unordered_map::emplace_hint() позволяет вставлять элементы в хеш-таблицу с подсказкой для оптимизации. Это особенно полезно, если известно, куда примерно должен встать новый элемент, ускоряя операцию вставки.
🔗 Документация (https://en.cppreference.com/w/cpp/container/unordered_map/emplace_hint)
👩💻
@quizcpp
⚙️ std::deque::shrink_to_fit()
std::deque::shrink_to_fit() освобождает избыточную память, используемую std::deque, уменьшая его емкость до фактического размера. Это полезно для оптимизации памяти после удаления элементов.
🔗 Документация (https://en.cppreference.com/w/cpp/container/deque/shrink_to_fit)
👩💻
@quizcpp
std::deque::shrink_to_fit() освобождает избыточную память, используемую std::deque, уменьшая его емкость до фактического размера. Это полезно для оптимизации памяти после удаления элементов.
🔗 Документация (https://en.cppreference.com/w/cpp/container/deque/shrink_to_fit)
👩💻
@quizcpp
⚙️ std::unique_ptr::release()
std::unique_ptr::release() освобождает владение объектом без его удаления, возвращая сырой указатель. Это полезно, когда нужно передать владение ресурсом другому управляемому указателю или вручную управлять памятью.
🔗 Документация (https://en.cppreference.com/w/cpp/memory/unique_ptr/release)
👩💻
@quizcpp
std::unique_ptr::release() освобождает владение объектом без его удаления, возвращая сырой указатель. Это полезно, когда нужно передать владение ресурсом другому управляемому указателю или вручную управлять памятью.
🔗 Документация (https://en.cppreference.com/w/cpp/memory/unique_ptr/release)
👩💻
@quizcpp
🚫 Антипаттерн недели: Отсутствие const для неизменяемых данных
В C++ использование const помогает защитить данные от непреднамеренных изменений, делает код понятнее и позволяет компилятору оптимизировать работу программы.
✔️ Добавляйте const, если переменная, параметр или метод не должны изменяться.
👩💻
@quizcpp
В C++ использование const помогает защитить данные от непреднамеренных изменений, делает код понятнее и позволяет компилятору оптимизировать работу программы.
✔️ Добавляйте const, если переменная, параметр или метод не должны изменяться.
👩💻
@quizcpp
⚙️ std::source_location::current()
std::source_location::current() (C++20) позволяет получить информацию о месте вызова функции, включая имя файла, номер строки и название функции. Это удобно для логирования, отладки и трассировки кода.
🔗 Документация (https://en.cppreference.com/w/cpp/utility/source_location)
👩💻
@quizcpp
std::source_location::current() (C++20) позволяет получить информацию о месте вызова функции, включая имя файла, номер строки и название функции. Это удобно для логирования, отладки и трассировки кода.
🔗 Документация (https://en.cppreference.com/w/cpp/utility/source_location)
👩💻
@quizcpp
⚙️ std::launder()
std::launder() (C++17) используется для корректного доступа к объектам после изменения их типа через размещённое new. Это необходимо при работе с низкоуровневой оптимизацией, аллокаторами и изменяемыми объектами.
🔗 Документация (https://en.cppreference.com/w/cpp/utility/launder)
👩💻
@quizcpp
std::launder() (C++17) используется для корректного доступа к объектам после изменения их типа через размещённое new. Это необходимо при работе с низкоуровневой оптимизацией, аллокаторами и изменяемыми объектами.
🔗 Документация (https://en.cppreference.com/w/cpp/utility/launder)
👩💻
@quizcpp
👍1
⚙️ std::experimental::sample
std::experimental::sample (C++17) позволяет случайным образом выбрать элементы из контейнера без необходимости перемешивания всей последовательности. Это удобно для случайной выборки данных в эффективном режиме.
🔗 Документация (https://en.cppreference.com/w/cpp/algorithm/sample)
👩💻
@quizcpp
std::experimental::sample (C++17) позволяет случайным образом выбрать элементы из контейнера без необходимости перемешивания всей последовательности. Это удобно для случайной выборки данных в эффективном режиме.
🔗 Документация (https://en.cppreference.com/w/cpp/algorithm/sample)
👩💻
@quizcpp
Дорогие подписчики, поздравляю вас с наступающим новым годом! Пусть в 2026 году исполнятся все ваши самые заветные желания🎄🎄🎄🎄
@quizcpp
@quizcpp
🎉1
⚙️ std::filesystem::unique_path()
std::filesystem::unique_path() генерирует случайное имя файла или директории с заданным шаблоном. Это полезно для создания временных файлов без конфликтов имён.
👩💻
@quizcpp
std::filesystem::unique_path() генерирует случайное имя файла или директории с заданным шаблоном. Это полезно для создания временных файлов без конфликтов имён.
👩💻
@quizcpp
⚙️ std::atomic_signal_fence()
std::atomic_signal_fence() предотвращает оптимизацию порядка инструкций компилятором, но не влияет на процессорные барьеры. Это полезно при синхронизации между обычным кодом и обработчиками сигналов.
👩💻
@quizcpp
std::atomic_signal_fence() предотвращает оптимизацию порядка инструкций компилятором, но не влияет на процессорные барьеры. Это полезно при синхронизации между обычным кодом и обработчиками сигналов.
👩💻
@quizcpp
⚙️ std::unordered_map::emplace_hint()
std::unordered_map::emplace_hint() позволяет вставлять элементы в хеш-таблицу с подсказкой для оптимизации. Это особенно полезно, если известно, куда примерно должен встать новый элемент, ускоряя операцию вставки.
🔗 Документация (https://en.cppreference.com/w/cpp/container/unordered_map/emplace_hint)
👩💻
@quizcpp
std::unordered_map::emplace_hint() позволяет вставлять элементы в хеш-таблицу с подсказкой для оптимизации. Это особенно полезно, если известно, куда примерно должен встать новый элемент, ускоряя операцию вставки.
🔗 Документация (https://en.cppreference.com/w/cpp/container/unordered_map/emplace_hint)
👩💻
@quizcpp
⚙️ std::move_only_function
std::move_only_function (C++23) — это аналог std::function, но с поддержкой только перемещаемых (не копируемых) замыканий. Полезно для высокопроизводительных сценариев и перемещаемых лямбд с захваченными уникальными ресурсами (std::unique_ptr, сокеты и т.д.).
👩💻
@quizcpp
std::move_only_function (C++23) — это аналог std::function, но с поддержкой только перемещаемых (не копируемых) замыканий. Полезно для высокопроизводительных сценариев и перемещаемых лямбд с захваченными уникальными ресурсами (std::unique_ptr, сокеты и т.д.).
👩💻
@quizcpp
⚙️ std::stacktrace
std::stacktrace (C++23) позволяет получить стек вызовов прямо во время выполнения. Это полезно для логирования, отладки, генерации crash-репортов и встроенных диагностик — прямо в продакшене.
👩💻
@quizcpp
std::stacktrace (C++23) позволяет получить стек вызовов прямо во время выполнения. Это полезно для логирования, отладки, генерации crash-репортов и встроенных диагностик — прямо в продакшене.
👩💻
@quizcpp
⚙️ std::is_constant_evaluated()
std::is_constant_evaluated() (C++20) позволяет определить, выполняется ли код в рамках constexpr-вычисления. Это полезно для написания функций, ведущих себя по-разному на этапе компиляции и выполнения.
👩💻
@quizcpp
std::is_constant_evaluated() (C++20) позволяет определить, выполняется ли код в рамках constexpr-вычисления. Это полезно для написания функций, ведущих себя по-разному на этапе компиляции и выполнения.
👩💻
@quizcpp
⚙️ std::bit_width()
std::bit_width() (C++20) возвращает минимальное количество бит, необходимое для представления значения. Это полезно при работе с битовыми структурами, алгоритмами сжатия, хэшированием и оптимизацией памяти.
👩💻
@quizcpp
std::bit_width() (C++20) возвращает минимальное количество бит, необходимое для представления значения. Это полезно при работе с битовыми структурами, алгоритмами сжатия, хэшированием и оптимизацией памяти.
👩💻
@quizcpp
⚙️ std::uninitialized_default_construct_n
std::uninitialized_default_construct_n (C++17) вызывает default-конструкторы объектов в необработанном блоке памяти без инициализации значений. Это полезно при ручном управлении памятью и написании аллокаторов или контейнеров.
👩💻
@quizcpp
std::uninitialized_default_construct_n (C++17) вызывает default-конструкторы объектов в необработанном блоке памяти без инициализации значений. Это полезно при ручном управлении памятью и написании аллокаторов или контейнеров.
👩💻
@quizcpp
⚙️ std::to_address()
std::to_address() (C++20) извлекает обычный указатель из объекта-итератора или умного указателя. Это полезно для универсальной работы с памятью без зависимости от типа указателя.
👩💻
@quizcpp
std::to_address() (C++20) извлекает обычный указатель из объекта-итератора или умного указателя. Это полезно для универсальной работы с памятью без зависимости от типа указателя.
👩💻
@quizcpp
⚙️ std::default_sentinel
std::default_sentinel (C++20) представляет универсальный конец диапазона и используется с пользовательскими итераторами и ranges. Это полезно для создания "открытых" и ленивых представлений данных.
👩💻
@quizcpp
std::default_sentinel (C++20) представляет универсальный конец диапазона и используется с пользовательскими итераторами и ranges. Это полезно для создания "открытых" и ленивых представлений данных.
👩💻
@quizcpp
⚙️ std::unexpected
std::unexpected (устаревший в C++17, но интересный исторически) используется для установки обработчика непредусмотренных исключений, выбрасываемых функциями с noexcept(false) или throw()-спецификацией. Полезно для отладки и контроля исключений в старом коде.
👩💻
@quizcpp
std::unexpected (устаревший в C++17, но интересный исторически) используется для установки обработчика непредусмотренных исключений, выбрасываемых функциями с noexcept(false) или throw()-спецификацией. Полезно для отладки и контроля исключений в старом коде.
👩💻
@quizcpp