С++ задачи и вопросы
569 subscribers
522 photos
4 files
201 links
Задачи, тесты и теоретические вопросы по С++

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

Что такое шаблонный метод std::enable_if в C++, как он работает, и в каких случаях его полезно использовать?

Ответ ⬇️
std::enable_if — это шаблонный механизм SFINAE (Substitution Failure Is Not An Error), позволяющий включать или отключать функции или классы на этапе компиляции в зависимости от выполнения условий. Это полезно для создания перегрузок шаблонов или ограничения их использования для определённых типов.

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

// Шаблон для целых чисел
template
typename std::enable_if::type
printType(T value) {
std::cout

@quizcpp
⚙️ std::bind

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

👩‍💻

@quizcpp
⚙️ std::accumulate

В C++ функция std::accumulate из заголовка выполняет свёртку элементов диапазона, используя заданную операцию. По умолчанию используется суммирование, но можно задать любую ассоциативную операцию.

👩‍💻

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