С++ задачи и вопросы
574 subscribers
512 photos
4 files
199 links
Задачи, тесты и теоретические вопросы по С++

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
➡️ Библиотека EasyLogging++

EasyLogging++ — это мощная и гибкая библиотека логирования для C++, которая поддерживает многопоточность и настраиваемый вывод. Она легко интегрируется в проекты и позволяет быстро настроить логирование с различными уровнями детализации, отладкой и фильтрацией.

• EasyLogging++ — отличный выбор, если требуется добавить логирование в проект с минимальными усилиями и высокой производительностью.

🔗 Ссылочка на доку (https://github.com/abumq/easyloggingpp)

👩‍💻

@quizcpp
Библиотека Armadillo

Armadillo — это высококачественная библиотека линейной алгебры для C++, разработанная Конрадом Сандерсоном. Она создана для обеспечения эффективных и простых в использовании матричных операций с интерфейсом, похожим на Matlab или Octave.
👩‍💻

@quizcpp
Библиотека Eigen

Eigen — это библиотека с открытым исходным кодом для языка программирования C++, предназначенная для выполнения операций линейной алгебры.

Она написана с использованием шаблонов и обеспечивает эффективный и удобный интерфейс для работы с векторами, матрицами и другими алгебраическими структурами.

👩‍💻

@quizcpp
👍1
spaceship operator

Spaceship operator () — это оператор сравнения, введенный в C++20.

Преимущества spaceship operator:
— Позволяет создавать типы, которые можно сравнивать с помощью одного оператора вместо нескольких (==, !=, и т. д.).
— Упрощает написание функций сравнения, например std::sort.
— Читабельнее и компактнее кода с традиционными операторами сравнения.

👩‍💻

@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
👍1
➡️ Использование библиотеки Dragonbox для быстрого и точного преобразования чисел с плавающей точкой в строку

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
➡️ Использование библиотеки NanoRange для работы с диапазонами в стиле C++20

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
C++_cheatsheet.pdf.pdf
29.4 KB
Шпаргалка по С++

👩‍💻

@quizcpp
🔥2
ETL

ETL (Embedded Template Library) — это библиотека шаблонов для C++, предназначенная для использования во встраиваемых системах. В отличие от стандартной библиотеки шаблонов (STL), ETL фокусируется на эффективном использовании ресурсов при работе с ограниченной памятью микроконтроллеров.

👩‍💻

@quizcpp
🔥1
Библиотека Range-v3

Библиотека Range-v3 (range-v3) в C++ представляет собой набор инструментов для работы с диапазонами элементов.

Диапазон — это обобщенное понятие, которое охватывает различные коллекции данных, такие как массивы, вектора, списки и строки.

👩‍💻

@quizcpp
🔥1
➡️ Использование std::flat_map для оптимизации производительности

std::flat_map — это структура данных, которая представляет собой ассоциативный контейнер, хранящий пары "ключ-значение" в упорядоченном виде с использованием вектора.

В отличие от std::map, std::flat_map оптимизирован для случаев, когда количество элементов невелико, так как хранение данных в последовательной области памяти снижает накладные расходы и улучшает кэширование.

• std::flat_map полезен для приложений, где требуется высокая производительность при небольших объемах данных и частых поисках.

👩‍💻

@quizcpp
➡️ Использование std::latch для синхронизации потоков

std::latch — это примитив синхронизации, который позволяет одному или нескольким потокам ожидать, пока другие потоки не завершат выполнение. В отличие от std::barrier, он не перезагружается после достижения условия синхронизации, что делает его полезным для одноразовой координации.

• std::latch полезен в ситуациях, когда необходимо, чтобы один поток ждал завершения других потоков.

👩‍💻

@quizcpp
🔥1
➡️ Использование библиотеки Glaze для сериализации данных в C++

Glaze — это мощная библиотека для сериализации объектов C++ в различные форматы, такие как JSON, с высокой производительностью. Она поддерживает статическую сериализацию, обеспечивая компактность и быстрое преобразование данных.

• Glaze подходит для приложений, где важна производительность при работе с большими объемами данных и их передачей в различные форматы.

🔗 Ссылочка на доку (https://github.com/stephenberry/glaze)

👩‍💻

@quizcpp
🔥1
⚙️ std::transform

В C++ функция std::transform из позволяет применить функцию к каждому элементу контейнера, создавая новый набор данных. Удобна для преобразования элементов на лету.

👩‍💻

@quizcpp