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

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

Что такое перемещение (move semantics) в C++11, как оно работает, и зачем нужен конструктор перемещения?

Ответ ⬇️
Перемещение — это оптимизация, которая позволяет передавать ресурсы (например, память или файлы) из одного объекта в другой без копирования, с помощью конструктора перемещения или оператора перемещения. Это достигается использованием std::move, который превращает объект в rvalue-ссылку, указывающую на временный объект. Конструктор перемещения предотвращает дорогостоящие копирования, делая код более производительным.

Пример использования ⚙️
#include
#include
#include // Для std::move

class MyVector {
private:
int* data;
size_t size;

public:
// Конструктор
MyVector(size_t n) : size(n), data(new int[n]) {
std::cout

@quizcpp
⚙️ std::set

Класс std::set из заголовка представляет собой контейнер, хранящий уникальные элементы в отсортированном порядке. Это удобно для работы с множествами или быстрого поиска.

👩‍💻

@quizcpp
⚙️ std::rotate

Функция std::rotate из заголовка циклически перемещает элементы в контейнере. Это удобно для сдвига массива или перестановки элементов.

👩‍💻

@quizcpp
👩‍💻 Задача по C++: Удаление дубликатов из массива

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

Пример:

std::vector numbers = {1, 2, 2, 3, 4, 3, 5};
std::vector result = removeDuplicates(numbers);

for (int num : result) {
std::cout

@quizcpp
⚙️ std::reverse

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

👩‍💻

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

Что такое perfect forwarding в C++, как оно работает и зачем оно нужно?

Ответ ⬇️
Perfect forwarding — это техника передачи аргументов в функции или конструкторы так, чтобы сохранить их исходные квалификаторы (например, lvalue, rvalue). Она достигается с помощью универсальных ссылок (T&&) и функции std::forward. Perfect forwarding используется для передачи аргументов в шаблонных функциях без лишних копирований.

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

void process(int& x) {
std::cout

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

Что такое шаблонный метод 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