С++ задачи и вопросы
565 subscribers
560 photos
4 files
205 links
Задачи, тесты и теоретические вопросы по С++

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

std::from_chars (C++17) позволяет эффективно преобразовывать строку в число без лишних аллокаций и проверок исключений, что делает его быстрее std::stoi.

👩‍💻

@quizcpp
⚙️ std::bind_front

std::bind_front (C++20) позволяет частично привязать первые аргументы функции или функторов, создавая удобные сокращённые вызовы.

👩‍💻

@quizcpp
⚙️ std::countr_zero

std::countr_zero (C++20) считает количество нулевых бит в конце двоичного представления числа. Полезно для работы с битовыми операциями и оптимизаций.

👩‍💻

@quizcpp
⚙️ std::byteswap

std::byteswap (C++23) меняет порядок байтов числа, что полезно для работы с big-endian и little-endian системами.

👩‍💻

@quizcpp
🚫 Антипаттерн недели: Использование new и delete вместо std::unique_ptr

В C++ ручное управление памятью с new и delete может привести к утечкам памяти и ошибкам двойного освобождения.

✔️ Используйте std::unique_ptr для автоматического управления ресурсами.

🗣 Почему это важно?

🟢std::unique_ptr автоматически освобождает память, когда объект выходит из области видимости.
🟢Исключает утечки памяти и снижает вероятность ошибок.
🟢Использует семантику перемещения (std::move) для безопасного передачи владения ресурсами.

👩‍💻

@quizcpp
⚙️ std::condition_variable

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

👩‍💻

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

Как работает expression SFINAE в C++, и чем оно отличается от обычного SFINAE?

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

Обычный SFINAE работает с typename, а expression SFINAE используется в decltype() для проверки существования конкретных операций или методов в типе.

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

// Проверяем, есть ли у типа метод size()
template
auto has_size(int) -> decltype(std::declval().size(), std::true_type{}) {
return {};
}

template
std::false_type has_size(...) { return {}; }

int main() {
std::cout

@quizcpp
⚙️ std::unordered_map::merge()

std::unordered_map::merge() позволяет объединять два unordered_map, перемещая элементы из одного контейнера в другой без дублирования и копирования. Это удобно для объединения данных без явного копирования ключей и значений.

🔗 Документация (https://en.cppreference.com/w/cpp/container/unordered_map/merge)

👩‍💻

@quizcpp
⚙️ std::shared_mutex

std::shared_mutex (C++17) позволяет реализовать механизм разделяемой (читающей) и эксклюзивной (пишущей) блокировки, что ускоряет многопоточный доступ к ресурсам, если чтений больше, чем записей.

🔗 Документация (https://en.cppreference.com/w/cpp/thread/shared_mutex)

👩‍💻

@quizcpp
⚙️ std::bitset::to_ullong()

std::bitset::to_ullong() преобразует битовое представление в целое число (unsigned long long). Это полезно для работы с битовыми масками, сетевыми протоколами и оптимизированным хранением флагов.

🔗 Документация (https://en.cppreference.com/w/cpp/utility/bitset/to_ullong)

👩‍💻

@quizcpp
⚙️ std::generator

std::generator (C++23) позволяет создавать ленивые генераторы, которые вычисляют значения по требованию, аналогично yield в Python. Это удобно для обработки больших потоков данных без лишнего потребления памяти.

🔗 Документация (https://en.cppreference.com/w/cpp/coroutine/generator)

👩‍💻

@quizcpp
⚙️ std::filesystem::hard_link_count()

std::filesystem::hard_link_count() позволяет узнать, сколько жёстких ссылок у файла. Это полезно для работы с файловыми системами, проверки ссылок на один и тот же файл и анализа структуры директорий.

🔗 Документация (https://en.cppreference.com/w/cpp/filesystem/hard_link_count)

👩‍💻

@quizcpp