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

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

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

👩‍💻

@quizcpp
🔥1
⚙️ std::partial_sort

В C++ функция std::partial_sort из заголовка сортирует только часть контейнера, оставляя элементы до заданной позиции отсортированными, а остальные — в неопределённом порядке. Это эффективно, если нужно найти несколько наименьших или наибольших элементов.

👩‍💻

@quizcpp
⚙️ std::merge

В C++ функция std::merge из заголовка объединяет два отсортированных диапазона в один отсортированный. Это полезно для слияния данных из двух контейнеров.

👩‍💻

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

Что такое emplace в C++ и чем оно отличается от push_back при работе с контейнерами STL?

Ответ ⬇️
Метод emplace добавляет новый элемент в контейнер, создавая его непосредственно на месте, вместо создания временного объекта и его копирования (как в случае с push_back). Это повышает производительность, особенно при добавлении сложных объектов. Метод emplace вызывает конструктор объекта с переданными аргументами прямо в памяти контейнера.

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

class MyClass {
public:
MyClass(const std::string& name, int value) : name(name), value(value) {
std::cout

@quizcpp
⚙️ std::remove_if

В C++ функция std::remove_if из заголовка удаляет элементы из контейнера, удовлетворяющие заданному условию. Она не уменьшает размер контейнера, а перемещает удалённые элементы в конец.

👩‍💻

@quizcpp
👩‍💻 Задача по C++: Подсчёт слов в строке

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

Пример:

#include
#include

int main() {
std::string text1 = "Hello world!";
std::string text2 = " Multiple spaces between words ";

std::cout

@quizcpp
⚙️ std::generate_n

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

👩‍💻

@quizcpp
🙌🙌🙌🙌 30 документов для тех, кто в диджитал

В преддверии новой активности мы собрали в одну папку 30 Telegram-каналов известных профессионалов и попросили их авторов подготовить для вас документы, которые помогут:

🔴Провести исследование через ИИ;
🔴Сдавать работы и получать акт день в день;
🔴Контролировать сроки и качества проектов;
🔴Отслеживать упоминания бренда в нейропоиске;
🔴Провести аудит HR-процессов;
🔴и еще много много всего!

❗️ Сохранив единожды папку «Документы для тех, кто в диджитал», вы сможете спокойно пройтись по всем каналам и скачать множество авторских документов, которые точно пригодятся в работе.

Также они проводят розыгрыш с топовыми призами:
🥇Главный приз — MacBook Air (M2)
🥈2 место: Яндекс Станция Лайт 2
🥉3 место: Наушники HUAWEI Freebuds 5i

Как участвовать:

1. Подпишись на папку:
https://t.iss.one/addlist/AYTpZaCWIxA5NWNi
2.
Подтверди участие в боте

До встречи 25 сентября — дата объявления победителя!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
⚙️ std::find

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

👩‍💻

@quizcpp
⚙️ std::clamp

В C++17 и выше функция std::clamp из заголовка ограничивает значение заданным диапазоном. Это удобно для нормализации данных или защиты от выхода за пределы диапазона.

👩‍💻

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

Что такое умные указатели в C++ (std::unique_ptr, std::shared_ptr, std::weak_ptr), и чем они отличаются друг от друга?

Ответ ⬇️
Умные указатели в C++ автоматизируют управление памятью и помогают избежать утечек памяти. Они находятся в заголовке .

std::unique_ptr владеет ресурсом единолично. При уничтожении указателя ресурс освобождается.
std::shared_ptr позволяет нескольким указателям совместно владеть ресурсом. Ресурс освобождается, когда последний shared_ptr уничтожается.
std::weak_ptr предоставляет доступ к ресурсу, но не увеличивает счётчик ссылок. Используется для предотвращения циклических зависимостей.

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

int main() {
// unique_ptr: единоличное владение
std::unique_ptr uptr = std::make_unique(10);
std::cout

@quizcpp
⚙️ 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