⚙️ std::from_chars
std::from_chars (C++17) предоставляет возможность быстро преобразовать строку в число без ненужных аллокаций и проверок на исключения, что делает его более быстрым, чем std::stoi.
👩💻
@quizcpp
std::from_chars (C++17) предоставляет возможность быстро преобразовать строку в число без ненужных аллокаций и проверок на исключения, что делает его более быстрым, чем std::stoi.
👩💻
@quizcpp
⚙️ std::bind_front
std::bind_front (C++20) позволяет предварительно привязывать первые аргументы функции или функторов, что упрощает их последующие вызовы.
👩💻
@quizcpp
std::bind_front (C++20) позволяет предварительно привязывать первые аргументы функции или функторов, что упрощает их последующие вызовы.
👩💻
@quizcpp
⚙️ std::countr_zero
std::countr_zero (C++20) подсчитывает, сколько нулевых битов находится в конце двоичного представления числа. Это полезно для выполнения битовых операций и оптимизаций.
👩💻
@quizcpp
std::countr_zero (C++20) подсчитывает, сколько нулевых битов находится в конце двоичного представления числа. Это полезно для выполнения битовых операций и оптимизаций.
👩💻
@quizcpp
⚙️ std::byteswap (C++23) изменяет порядок байтов в числе, что удобно для работы с системами big-endian и little-endian. 👩💻
@quizcpp
@quizcpp
👍1
⚙️ std::endian
std::endian (C++20) указывает на порядок байтов (big-endian или little-endian) в текущей системе. Это важно при взаимодействии с бинарными файлами и сетевыми протоколами.
👩💻
@quizcpp
std::endian (C++20) указывает на порядок байтов (big-endian или little-endian) в текущей системе. Это важно при взаимодействии с бинарными файлами и сетевыми протоколами.
👩💻
@quizcpp
👍1
⚙️ std::scope_guard
std::scope_guard (C++23) автоматически осуществляет заданное действие при выходе из области видимости, что способствует управлению ресурсами и предотвращает утечки.
👩💻
@quizcpp
std::scope_guard (C++23) автоматически осуществляет заданное действие при выходе из области видимости, что способствует управлению ресурсами и предотвращает утечки.
👩💻
@quizcpp
🔥2
⚙️ std::atomic_flag
std::atomic_flag — это базовый атомарный флаг, предназначенный для низкоуровневой синхронизации потоков без использования блокировок. Он полезен для создания спинлоков.
👩💻
@quizcpp
std::atomic_flag — это базовый атомарный флаг, предназначенный для низкоуровневой синхронизации потоков без использования блокировок. Он полезен для создания спинлоков.
👩💻
@quizcpp
⚙️ std::hive
std::hive (C++23) — это контейнер, который оптимизирован для частых добавлений и удалений элементов, при этом предотвращая фрагментацию памяти. В отличие от std::vector или std::list, hive предлагает эффективное управление памятью и итерацию.
👩💻
@quizcpp
std::hive (C++23) — это контейнер, который оптимизирован для частых добавлений и удалений элементов, при этом предотвращая фрагментацию памяти. В отличие от std::vector или std::list, hive предлагает эффективное управление памятью и итерацию.
👩💻
@quizcpp
👍3
⚙️ fmt::print()
fmt::print() из библиотеки {fmt} — это современный способ форматирования и вывода текста, который является альтернативой printf() и std::cout. Он предлагает удобные возможности для форматирования, безопасный подход и высокую производительность.
🔗 Документация (https://fmt.dev/)
👩💻
@quizcpp
fmt::print() из библиотеки {fmt} — это современный способ форматирования и вывода текста, который является альтернативой printf() и std::cout. Он предлагает удобные возможности для форматирования, безопасный подход и высокую производительность.
🔗 Документация (https://fmt.dev/)
👩💻
@quizcpp
🚫 Антипаттерн недели: Использование ручного управления памятью вместо std::unique_ptr
В C++ применение new и delete без должного контроля может вызвать утечки памяти, ошибки двойного освобождения и неопределённое поведение.
✔️ Используйте std::unique_ptr для автоматического освобождения памяти.
👩💻
@quizcpp
В C++ применение new и delete без должного контроля может вызвать утечки памяти, ошибки двойного освобождения и неопределённое поведение.
✔️ Используйте std::unique_ptr для автоматического освобождения памяти.
👩💻
@quizcpp
⚙️ std::ranges::views::filter
std::ranges::views::filter (C++20) предоставляет удобный способ фильтрации элементов в диапазоне без необходимости создавать временные контейнеры. Это улучшает читаемость и производительность кода.
🔗 Документация (https://en.cppreference.com/w/cpp/ranges/filter_view)
👩💻
@quizcpp
std::ranges::views::filter (C++20) предоставляет удобный способ фильтрации элементов в диапазоне без необходимости создавать временные контейнеры. Это улучшает читаемость и производительность кода.
🔗 Документация (https://en.cppreference.com/w/cpp/ranges/filter_view)
👩💻
@quizcpp
⚙️ std::unordered_map::merge()
Функция std::unordered_map::merge() дает возможность соединить два unordered_map, перемещая элементы из одного контейнера в другой без создания дубликатов и копирования. Это удобно для объединения данных без необходимости явного копирования ключей и значений.
🔗 Документация (https://en.cppreference.com/w/cpp/container/unordered_map/merge)
👩💻
@quizcpp
Функция std::unordered_map::merge() дает возможность соединить два unordered_map, перемещая элементы из одного контейнера в другой без создания дубликатов и копирования. Это удобно для объединения данных без необходимости явного копирования ключей и значений.
🔗 Документация (https://en.cppreference.com/w/cpp/container/unordered_map/merge)
👩💻
@quizcpp
Во что компилятор C++ превращает код, или ускоряем код безопасно
https://habr.com/ru/companies/ascon/articles/850406/
https://habr.com/ru/companies/ascon/articles/850406/
Хабр
Во что компилятор C++ превращает код, или ускоряем код безопасно
Привет, Хабр! Меня зовут Алексей Салтыков, я инженер-программист в команде КОМПАС-3D. Решил поделиться соображениями насчет оптимизаций в С++ глазами обычного разработчика. Хочется сразу предупредить,...
⚙️ std::bitset::to_ullong()
Метод std::bitset::to_ullong() преобразует битовое представление в беззнаковое целое число типа long long. Это удобно для работы с битовыми масками, сетевыми протоколами и эффективным хранением флагов.
🔗 Документация (https://en.cppreference.com/w/cpp/utility/bitset/to_ullong)
👩💻
@quizcpp
Метод std::bitset::to_ullong() преобразует битовое представление в беззнаковое целое число типа long long. Это удобно для работы с битовыми масками, сетевыми протоколами и эффективным хранением флагов.
🔗 Документация (https://en.cppreference.com/w/cpp/utility/bitset/to_ullong)
👩💻
@quizcpp