⚙️ 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
⚙️ 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
⚙️ 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
🚫 Антипаттерн недели: Отсутствие виртуальности в деструкторах базовых классов
В C++, если деструктор базового класса не является виртуальным, объекты производных классов могут быть уничтожены неправильно, что может привести к утечке памяти.
✔️ Всегда делайте деструкторы виртуальными в полиморфных классах.
👩💻
@quizcpp
В C++, если деструктор базового класса не является виртуальным, объекты производных классов могут быть уничтожены неправильно, что может привести к утечке памяти.
✔️ Всегда делайте деструкторы виртуальными в полиморфных классах.
👩💻
@quizcpp
👍1
🚫 Антипаттерн недели: Применение malloc() вместо new
В C++ функция malloc() не вызывает конструктор объекта, что может привести к неправильной инициализации данных. Использование new является более предпочтительным, так как оно корректно создает объект.
✔️ При работе с объектами используйте new вместо malloc().
👩💻
@quizcpp
В C++ функция malloc() не вызывает конструктор объекта, что может привести к неправильной инициализации данных. Использование new является более предпочтительным, так как оно корректно создает объект.
✔️ При работе с объектами используйте new вместо malloc().
👩💻
@quizcpp
👍1
⚙️ std::destroy_at()
std::destroy_at() (C++17) позволяет вручную вызвать деструктор объекта, не освобождая при этом память. Это удобно при использовании нестандартных аллокаторов или при ручном управлении памятью.
👩💻
@quizcpp
std::destroy_at() (C++17) позволяет вручную вызвать деструктор объекта, не освобождая при этом память. Это удобно при использовании нестандартных аллокаторов или при ручном управлении памятью.
👩💻
@quizcpp
🔥1
⚙️ std::addressof()
std::addressof() помогает получить реальный адрес объекта, даже если оператор & был изменен. Это особенно полезно при использовании умных указателей и измененных операций.
👩💻
@quizcpp
std::addressof() помогает получить реальный адрес объекта, даже если оператор & был изменен. Это особенно полезно при использовании умных указателей и измененных операций.
👩💻
@quizcpp
👍1
➡️ Библиотека SQLiteCpp
SQLiteCpp — это легкая обертка для SQLite, одной из самых популярных легковесных реляционных баз данных. Она предлагает удобный и безопасный интерфейс для работы с SQLite в C++, что упрощает взаимодействие с базами данных.
• Если вам нужно встроить простую, но мощную базу данных в ваше C++ приложение, SQLiteCpp — это то, что вам нужно.
🔗 Ссылка на документацию (https://github.com/SRombauts/SQLiteCpp)
👩💻
@quizcpp
SQLiteCpp — это легкая обертка для SQLite, одной из самых популярных легковесных реляционных баз данных. Она предлагает удобный и безопасный интерфейс для работы с SQLite в C++, что упрощает взаимодействие с базами данных.
• Если вам нужно встроить простую, но мощную базу данных в ваше C++ приложение, SQLiteCpp — это то, что вам нужно.
🔗 Ссылка на документацию (https://github.com/SRombauts/SQLiteCpp)
👩💻
@quizcpp
👍2🔥2
👀 Отслеживание использования памяти с помощью mallinfo2()
В C++ можно контролировать объем памяти, выделенной через malloc(), с использованием mallinfo2(). Это помогает в выявлении утечек памяти и анализе динамического распределения памяти.
✔️ Применение mallinfo2() дает возможность получить данные о текущем использовании кучи.
👩💻
@quizcpp
В C++ можно контролировать объем памяти, выделенной через malloc(), с использованием mallinfo2(). Это помогает в выявлении утечек памяти и анализе динамического распределения памяти.
✔️ Применение mallinfo2() дает возможность получить данные о текущем использовании кучи.
👩💻
@quizcpp
👀 Измерение времени выполнения кода с использованием std::chrono::high_resolution_clock
В C++ существует возможность измерять время выполнения кода с высокой точностью благодаря std::chrono::high_resolution_clock. Это особенно полезно для профилирования и повышения производительности.
✔️ Применение std::chrono::high_resolution_clock::now() позволяет фиксировать время выполнения кода в наносекундах.
👩💻
@quizcpp
В C++ существует возможность измерять время выполнения кода с высокой точностью благодаря std::chrono::high_resolution_clock. Это особенно полезно для профилирования и повышения производительности.
✔️ Применение std::chrono::high_resolution_clock::now() позволяет фиксировать время выполнения кода в наносекундах.
👩💻
@quizcpp
⚙️ std::has_single_bit()
std::has_single_bit() (C++20) определяет, является ли число степенью двойки, то есть имеет ли оно только один установленный бит. Это может быть полезно при работе с битовыми масками и для оптимизации алгоритмов.
👩💻
@quizcpp
std::has_single_bit() (C++20) определяет, является ли число степенью двойки, то есть имеет ли оно только один установленный бит. Это может быть полезно при работе с битовыми масками и для оптимизации алгоритмов.
👩💻
@quizcpp
⚙️ std::has_single_bit()
std::has_single_bit() (C++20) определяет, является ли число степенью двойки, то есть содержит ли оно только один установленный бит. Это может быть полезно при работе с битовыми масками и для оптимизации алгоритмов.
👩💻
@quizcpp
std::has_single_bit() (C++20) определяет, является ли число степенью двойки, то есть содержит ли оно только один установленный бит. Это может быть полезно при работе с битовыми масками и для оптимизации алгоритмов.
👩💻
@quizcpp
👍1
⚙️ std::experimental::fundamentals_v2::scope_guard
std::experimental::scope_guard (C++23) гарантирует выполнение кода при выходе из области видимости, что полезно для управления ресурсами и предотвращения утечек.
👩💻
@quizcpp
std::experimental::scope_guard (C++23) гарантирует выполнение кода при выходе из области видимости, что полезно для управления ресурсами и предотвращения утечек.
👩💻
@quizcpp
⚙️ std::bit_ceil()
std::bit_ceil() (C++20) находит ближайшую степень двойки, которая не меньше указанного числа. Это полезно при работе с битовыми масками и для оптимизации контейнеров.
👩💻
@quizcpp
std::bit_ceil() (C++20) находит ближайшую степень двойки, которая не меньше указанного числа. Это полезно при работе с битовыми масками и для оптимизации контейнеров.
👩💻
@quizcpp
🚫 Применение using namespace std; в глобальной области видимости
В C++ использование using namespace std; в глобальной области может вызвать конфликты имён, особенно в больших проектах.
✔️ Явно указывайте необходимые пространства имён или применяйте using внутри функций.
👩💻
@quizcpp
В C++ использование using namespace std; в глобальной области может вызвать конфликты имён, особенно в больших проектах.
✔️ Явно указывайте необходимые пространства имён или применяйте using внутри функций.
👩💻
@quizcpp
⚙️ std::valarray
std::valarray предназначен для эффективной работы с числовыми массивами и поддерживает векторные операции, что делает его полезным для научных расчетов и обработки данных.
👩💻
@quizcpp
std::valarray предназначен для эффективной работы с числовыми массивами и поддерживает векторные операции, что делает его полезным для научных расчетов и обработки данных.
👩💻
@quizcpp