➡️ Утверждение Валидности
Утверждения помогают проверять корректность выражений с помощью макроса assert из заголовочного файла . Это полезно для отладки, чтобы проверить правильность значения переменной.
Если выражение равно 0 (ложь), выводится сообщение об ошибке, и программа завершается.
🗣️ Например, переменная maxsize никогда не должна превышать 1024. Можно использовать утверждение для проверки значения и вывода сообщения об ошибке, если значение некорректно.
#include
int main() {
assert(maxsize
@quizcpp
Утверждения помогают проверять корректность выражений с помощью макроса assert из заголовочного файла . Это полезно для отладки, чтобы проверить правильность значения переменной.
Если выражение равно 0 (ложь), выводится сообщение об ошибке, и программа завершается.
🗣️ Например, переменная maxsize никогда не должна превышать 1024. Можно использовать утверждение для проверки значения и вывода сообщения об ошибке, если значение некорректно.
#include
int main() {
assert(maxsize
@quizcpp
➡️ Магия byte
Не многие знаю что существует тип переменной byte. Число этого типа может быть в диапазоне от 0 до 255.
👀 А теперь посмотрите насколько это удобно использовать для хранения значений аналоговых входов Просто идеально… Главное в минус не загоняйте число)
🗣 А, и занимает это чудо в 2 раза меньше памяти. За такое вас по головке поглядят.
👩💻
@quizcpp
Не многие знаю что существует тип переменной byte. Число этого типа может быть в диапазоне от 0 до 255.
👀 А теперь посмотрите насколько это удобно использовать для хранения значений аналоговых входов Просто идеально… Главное в минус не загоняйте число)
🗣 А, и занимает это чудо в 2 раза меньше памяти. За такое вас по головке поглядят.
👩💻
@quizcpp
➡️ Вложенные макросы
Используйте вложенные макросы везде. Это хороший способ сократить код.
• Макрос LOG: Выводит сообщение в консоль.
• Макрос ADD: Складывает два числа.
• Макрос ADD_AND_LOG: Сложение двух чисел и вывод результата в консоль с использованием вложенных макросов.
👩💻
@quizcpp
Используйте вложенные макросы везде. Это хороший способ сократить код.
• Макрос LOG: Выводит сообщение в консоль.
• Макрос ADD: Складывает два числа.
• Макрос ADD_AND_LOG: Сложение двух чисел и вывод результата в консоль с использованием вложенных макросов.
👩💻
@quizcpp
➡️ Использование алиасов для длинных типов
Это позволяет значительно упростить код, сделать его более читаемым и легким для поддержки.
• Например:
typedef std::vector StrVector;
👩💻
@quizcpp
Это позволяет значительно упростить код, сделать его более читаемым и легким для поддержки.
• Например:
typedef std::vector StrVector;
👩💻
@quizcpp
🔥1
➡️ Библиотека EasyLogging++
EasyLogging++ — это мощная и гибкая библиотека логирования для C++, которая поддерживает многопоточность и настраиваемый вывод. Она легко интегрируется в проекты и позволяет быстро настроить логирование с различными уровнями детализации, отладкой и фильтрацией.
• EasyLogging++ — отличный выбор, если требуется добавить логирование в проект с минимальными усилиями и высокой производительностью.
🔗 Ссылочка на доку (https://github.com/abumq/easyloggingpp)
👩💻
@quizcpp
EasyLogging++ — это мощная и гибкая библиотека логирования для C++, которая поддерживает многопоточность и настраиваемый вывод. Она легко интегрируется в проекты и позволяет быстро настроить логирование с различными уровнями детализации, отладкой и фильтрацией.
• EasyLogging++ — отличный выбор, если требуется добавить логирование в проект с минимальными усилиями и высокой производительностью.
🔗 Ссылочка на доку (https://github.com/abumq/easyloggingpp)
👩💻
@quizcpp
Библиотека Armadillo
Armadillo — это высококачественная библиотека линейной алгебры для C++, разработанная Конрадом Сандерсоном. Она создана для обеспечения эффективных и простых в использовании матричных операций с интерфейсом, похожим на Matlab или Octave.
👩💻
@quizcpp
Armadillo — это высококачественная библиотека линейной алгебры для C++, разработанная Конрадом Сандерсоном. Она создана для обеспечения эффективных и простых в использовании матричных операций с интерфейсом, похожим на Matlab или Octave.
👩💻
@quizcpp
Библиотека Eigen
Eigen — это библиотека с открытым исходным кодом для языка программирования C++, предназначенная для выполнения операций линейной алгебры.
Она написана с использованием шаблонов и обеспечивает эффективный и удобный интерфейс для работы с векторами, матрицами и другими алгебраическими структурами.
👩💻
@quizcpp
Eigen — это библиотека с открытым исходным кодом для языка программирования C++, предназначенная для выполнения операций линейной алгебры.
Она написана с использованием шаблонов и обеспечивает эффективный и удобный интерфейс для работы с векторами, матрицами и другими алгебраическими структурами.
👩💻
@quizcpp
👍1
spaceship operator
Spaceship operator () — это оператор сравнения, введенный в C++20.
Преимущества spaceship operator:
— Позволяет создавать типы, которые можно сравнивать с помощью одного оператора вместо нескольких (==, !=, и т. д.).
— Упрощает написание функций сравнения, например std::sort.
— Читабельнее и компактнее кода с традиционными операторами сравнения.
👩💻
@quizcpp
Spaceship operator () — это оператор сравнения, введенный в C++20.
Преимущества spaceship operator:
— Позволяет создавать типы, которые можно сравнивать с помощью одного оператора вместо нескольких (==, !=, и т. д.).
— Упрощает написание функций сравнения, например std::sort.
— Читабельнее и компактнее кода с традиционными операторами сравнения.
👩💻
@quizcpp
#вопросы_с_собеседований
Что такое атомарная операция?
Атомарная операция — это операция, которая выполняется как одна неделимая инструкция.
Атомарность гарантирует, что при выполнении такой операции никакая другая нить или процесс не сможет получить доступ к изменяемым данным.
Например, инкремент или декремент числовой переменной является атомарной операцией. Чтение и запись указателя также происходит атомарно.
Атомарность важна в многопоточном программировании — она позволяет избежать гонок данных при обращении разных потоков к общим данным.
👩💻
@quizcpp
Что такое атомарная операция?
Атомарная операция — это операция, которая выполняется как одна неделимая инструкция.
Атомарность гарантирует, что при выполнении такой операции никакая другая нить или процесс не сможет получить доступ к изменяемым данным.
Например, инкремент или декремент числовой переменной является атомарной операцией. Чтение и запись указателя также происходит атомарно.
Атомарность важна в многопоточном программировании — она позволяет избежать гонок данных при обращении разных потоков к общим данным.
👩💻
@quizcpp
#вопросы_с_собеседований
Какая разница между std::map и std::unordered_map?
std::map — это ассоциативный контейнер на основе красно-черного дерева. Элементы хранятся в отсортированном порядке по ключу. Сложность операций O(log N).
std::unordered_map реализован как хеш-таблица. Элементы хранятся в произвольном порядке. В среднем сложность операций O(1).
Основные различия между std::map и std::unordered_map:
— Поиск, вставка и удаление в std::map за O(log N) в худшем случае. В std::unordered_map за O(1) в среднем.
— Итераторы std::map позволяют перебирать элементы в отсортированном порядке. Порядок элементов std::unordered_map произвольный.
— Map поддерживает бинарный поиск lower_bound(), upper_bound(), а unordered_map — нет.
— В unordered_map нельзя использовать указатели в качестве ключей в хеш-таблице. В map можно.
👩💻
@quizcpp
Какая разница между std::map и std::unordered_map?
std::map — это ассоциативный контейнер на основе красно-черного дерева. Элементы хранятся в отсортированном порядке по ключу. Сложность операций O(log N).
std::unordered_map реализован как хеш-таблица. Элементы хранятся в произвольном порядке. В среднем сложность операций O(1).
Основные различия между std::map и std::unordered_map:
— Поиск, вставка и удаление в std::map за O(log N) в худшем случае. В std::unordered_map за O(1) в среднем.
— Итераторы std::map позволяют перебирать элементы в отсортированном порядке. Порядок элементов std::unordered_map произвольный.
— Map поддерживает бинарный поиск lower_bound(), upper_bound(), а unordered_map — нет.
— В unordered_map нельзя использовать указатели в качестве ключей в хеш-таблице. В map можно.
👩💻
@quizcpp
👍1
➡️ Использование библиотеки Dragonbox для быстрого и точного преобразования чисел с плавающей точкой в строку
Dragonbox — это современная библиотека C++, которая обеспечивает чрезвычайно быстрое и точное преобразование чисел с плавающей точкой (float и double) в строковое представление. Она гарантирует корректность округления, что делает её отличным выбором для высокопроизводительных приложений.
• Dragonbox полезен при разработке приложений, требующих работы с числовыми данными и их преобразования в строковый формат.
🔗 Ссылочка на доку (https://github.com/jk-jeon/dragonbox)
👩💻
@quizcpp
Dragonbox — это современная библиотека C++, которая обеспечивает чрезвычайно быстрое и точное преобразование чисел с плавающей точкой (float и double) в строковое представление. Она гарантирует корректность округления, что делает её отличным выбором для высокопроизводительных приложений.
• Dragonbox полезен при разработке приложений, требующих работы с числовыми данными и их преобразования в строковый формат.
🔗 Ссылочка на доку (https://github.com/jk-jeon/dragonbox)
👩💻
@quizcpp
🔥1
❓ Вопрос на собеседовании
Что такое "RAII" (Resource Acquisition Is Initialization) и как это помогает в управлении ресурсами в C++?
Ответ ⬇️
"RAII" — это идиома, при которой инициализация объекта захватывает ресурс, а освобождение ресурса происходит автоматически при уничтожении объекта. Это гарантирует корректное освобождение ресурсов, таких как память или файловые дескрипторы, даже при исключениях.
🗣 Пример:
#include
class File {
public:
File(const char* filename) {
file_ = fopen(filename, "w");
if (file_) {
std::cout
@quizcpp
Что такое "RAII" (Resource Acquisition Is Initialization) и как это помогает в управлении ресурсами в C++?
Ответ ⬇️
"RAII" — это идиома, при которой инициализация объекта захватывает ресурс, а освобождение ресурса происходит автоматически при уничтожении объекта. Это гарантирует корректное освобождение ресурсов, таких как память или файловые дескрипторы, даже при исключениях.
🗣 Пример:
#include
class File {
public:
File(const char* filename) {
file_ = fopen(filename, "w");
if (file_) {
std::cout
@quizcpp
➡️ Использование библиотеки NanoRange для работы с диапазонами в стиле C++20
NanoRange приносит функциональность диапазонов (Ranges) из C++20 в более ранние версии стандарта C++.
Она позволяет использовать удобные и гибкие инструменты для работы с последовательностями, такими как фильтрация, трансформация и ленивые вычисления, что делает код более чистым и выразительным.
• NanoRange идеально подходит для проектов, работающих на стандартах C++11, C++14 или C++17, но желающих использовать преимущества std::ranges.
🔗 Ссылочка на доку (https://github.com/tcbrindle/NanoRange)
👩💻
@quizcpp
NanoRange приносит функциональность диапазонов (Ranges) из C++20 в более ранние версии стандарта C++.
Она позволяет использовать удобные и гибкие инструменты для работы с последовательностями, такими как фильтрация, трансформация и ленивые вычисления, что делает код более чистым и выразительным.
• NanoRange идеально подходит для проектов, работающих на стандартах C++11, C++14 или C++17, но желающих использовать преимущества std::ranges.
🔗 Ссылочка на доку (https://github.com/tcbrindle/NanoRange)
👩💻
@quizcpp
➡️ Использование библиотеки immer для работы с неизменяемыми структурами данных в C++
immer позволяет создавать и изменять структуры данных без изменения исходных объектов, что полезно в многопоточных и функциональных программах.
• immer делает работу с данными безопаснее и эффективнее, особенно в многопоточной среде.
🔗 Ссылочка на доку (https://github.com/arximboldi/immer)
👩💻
@quizcpp
immer позволяет создавать и изменять структуры данных без изменения исходных объектов, что полезно в многопоточных и функциональных программах.
• immer делает работу с данными безопаснее и эффективнее, особенно в многопоточной среде.
🔗 Ссылочка на доку (https://github.com/arximboldi/immer)
👩💻
@quizcpp
ETL
ETL (Embedded Template Library) — это библиотека шаблонов для C++, предназначенная для использования во встраиваемых системах. В отличие от стандартной библиотеки шаблонов (STL), ETL фокусируется на эффективном использовании ресурсов при работе с ограниченной памятью микроконтроллеров.
👩💻
@quizcpp
ETL (Embedded Template Library) — это библиотека шаблонов для C++, предназначенная для использования во встраиваемых системах. В отличие от стандартной библиотеки шаблонов (STL), ETL фокусируется на эффективном использовании ресурсов при работе с ограниченной памятью микроконтроллеров.
👩💻
@quizcpp
🔥1