С++ задачи и вопросы
566 subscribers
532 photos
4 files
200 links
Задачи, тесты и теоретические вопросы по С++

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
🤔 Как это работает? — Передача аргументов в C++

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

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

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

Развернутый аналог:
void modifyValue(const int &value) {
// value нельзя изменить
}

👩‍💻

@quizcpp
🔥1
⚙️ std::ofstream

std::ofstream из заголовка используется для записи данных в файл. Это удобный инструмент для работы с файлами, позволяющий записывать текстовую или бинарную информацию.

👩‍💻

@quizcpp
⚙️ std::byte

std::byte из заголовка предоставляет тип для работы с данными на уровне байтов. Это полезно для низкоуровневой работы с памятью и сетевыми протоколами.

👩‍💻

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

Как работает std::atomic в C++, и в чём его преимущество перед обычными переменными в многопоточном программировании?

Ответ ⬇️
std::atomic — это шаблонный класс из библиотеки , который предоставляет атомарные операции с переменными, гарантируя их безопасность в многопоточной среде. Используя атомарные операции, вы избегаете гонок данных без необходимости явно использовать мьютексы.

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

std::atomic counter(0);

void increment() {
for (int i = 0; i < 1000; ++i) {
counter.fetch_add(1);
}
}

int main() {
std::thread t1(increment);
std::thread t2(increment);

t1.join();
t2.join();

std::cout

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

Как работает std::atomic в C++, и в чём его преимущество перед обычными переменными в многопоточном программировании?

Ответ ⬇️
std::atomic — это шаблонный класс из библиотеки , который предоставляет атомарные операции с переменными, гарантируя их безопасность в многопоточной среде. Используя атомарные операции, вы избегаете гонок данных без необходимости явно использовать мьютексы.

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

std::atomic counter(0);

void increment() {
for (int i = 0; i < 1000; ++i) {
counter.fetch_add(1);
}
}

int main() {
std::thread t1(increment);
std::thread t2(increment);

t1.join();
t2.join();

std::cout

@quizcpp
🚫 Антипаттерн недели: Использование явных циклов для поиска в контейнерах

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

✔️ Используйте алгоритмы из , такие как std::find, чтобы упростить код и улучшить читаемость.

👩‍💻

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

Что такое std::allocator в C++, и как его можно использовать для управления памятью?

Ответ ⬇️
std::allocator — это стандартный шаблонный класс, предоставляющий низкоуровневые инструменты для управления памятью в STL-контейнерах. Он позволяет настраивать аллокацию памяти, предоставляя методы для выделения, освобождения и построения объектов.

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

int main() {
std::allocator allocator;

// Выделяем память для 3 целых чисел
int* arr = allocator.allocate(3);

// Конструируем элементы
allocator.construct(arr, 10);
allocator.construct(arr + 1, 20);
allocator.construct(arr + 2, 30);

// Выводим значения
for (int i = 0; i < 3; ++i) {
std::cout

@quizcpp