С++ задачи и вопросы
567 subscribers
528 photos
4 files
202 links
Задачи, тесты и теоретические вопросы по С++

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
⚙️ std::minmax_element()

Функция std::minmax_element() из находит минимальный и максимальный элементы в одном проходе. Это эффективнее, чем отдельные вызовы std::min_element() и std::max_element().

👩‍💻

@quizcpp
⚙️ std::ranges::for_each

В C++20 функция std::ranges::for_each из заголовка позволяет применять заданную функцию к элементам диапазона с учётом новой концепции Range-based. Это упрощает работу с контейнерами и итераторами.

👩‍💻

@quizcpp
⚙️ std::chrono

В C++ библиотека предоставляет инструменты для измерения времени выполнения кода с высокой точностью. Это полезно для профилирования производительности и оптимизации.

👩‍💻

@quizcpp
🔥1
🤔 Как это работает? — C++: Умные указатели std::shared_ptr

В C++ умные указатели помогают управлять памятью автоматически. Давайте разберёмся, как работает std::shared_ptr.

➡️ Как это работает:

• std::shared_ptr ptr1 создаёт умный указатель ptr1, который владеет объектом MyClass.
• ptr2 = ptr1 делает ptr2 ещё одним владельцем того же объекта.
• ptr1.use_count() возвращает количество умных указателей, владеющих объектом.

Когда последний std::shared_ptr перестанет существовать, объект будет автоматически удалён.

👩‍💻

@quizcpp
Антипаттерн недели: Утечка памяти из-за забытых delete

Забыть освободить выделенную память с помощью delete может привести к утечке памяти (memory leak).

Каждый вызов new должен сопровождаться вызовом delete или delete[]. В противном случае выделенная память остаётся занята до завершения программы.

✔️ Как исправить:

Используйте умные указатели (std::unique_ptr или std::shared_ptr), чтобы автоматически управлять памятью. Если используете new, не забудьте вызвать delete.
#include
#include

void createArray() {
auto arr = std::make_unique(5);
arr[0] = 42;
std::cout

@quizcpp
⁉️Хотите, чтобы интерфейсы ваших приложений выглядели профессионально и динамично, а пользовательский опыт стал на порядок выше?

🎓Qt — это мощный инструмент, а QtStateMachine открывает новые возможности для построения логики и создания сложных анимаций. На открытом уроке мы разберём, как моделировать поведение интерфейса с помощью состояний и переходов, и шаг за шагом создадим несколько анимаций.

Вебинар будет особенно полезен разработчикам, которые уже знакомы с Qt и хотят научиться создавать более интерактивные приложения.

➡️ Регистрируйтесь на открытый урок курса «Разработка прикладного ПО на Qt и ОС „Аврора“» 22 сентября в 20:00. Участники получат скидку на обучение: https://clck.ru/3PGFcS


Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⚙️ std::unordered_map

В C++ std::unordered_map из заголовка представляет собой хэш-таблицу, которая обеспечивает быстрый доступ к элементам по ключу. В отличие от std::map, элементы хранятся в произвольном порядке, а операции поиска выполняются за O(1) в среднем случае.

👩‍💻

@quizcpp
Вопрос на собеседовании

Что такое pimpl idiom в C++ и когда его использовать?

Ответ ⬇️
Pimpl idiom (Pointer to Implementation) — это паттерн, который скрывает реализацию класса за указателем на скрытый тип в заголовочном файле. Это улучшает инкапсуляцию, минимизирует зависимости и ускоряет компиляцию.

Пример использования ⚙️
// MyClass.h
#include

class MyClassImpl; // Forward declaration

class MyClass {
public:
MyClass();
void someFunction();

private:
std::unique_ptr pImpl; // Указатель на скрытую реализацию
};

// MyClass.cpp
#include "MyClass.h"
#include

class MyClassImpl {
public:
void someFunctionImpl() { std::cout someFunctionImpl(); }

// main.cpp
#include "MyClass.h"

int main() {
MyClass obj;
obj.someFunction();
return 0;
}

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

👩‍💻

@quizcpp