Библиотека задач по C++ | тесты, код, задания
12.5K subscribers
980 photos
5 videos
275 links
Задачи и тесты по C++ для тренировки и обучения.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/7a480301

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
‼️ Задача на выходные

Этот код содержит баг. Необходимо найди его:

#include <ranges>
#include <vector>
#include <iostream>
#include <algorithm>

int main() {
std::vector<int> vec = { 5, 3, 1, 4, 2 };

auto sorted_view = vec
| std::views::transform([](int x) { return x; });

std::ranges::sort(sorted_view);

for (auto v : sorted_view) {
std::cout << v << " ";
}
}


Подсказка: views::transform возвращает prvalue. Можно ли сортировать такой view?

Отсортируется ли vec? Если нет — какая ошибка компиляции и почему?


📍Навигация:
ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Что верно о __restrict__?
Anonymous Quiz
15%
Это стандартное ключевое слово C++23
20%
Запрещает любое алиасирование в программе
51%
Это расширение компилятора, аналог C99 restrict
9%
Доступно только в MSVC
‼️ Задача на выходные: lock_guard

Проведи ревью кода и найди проблему (если она есть😉).

#include <mutex>
#include <thread>
#include <vector>
#include <iostream>

std::mutex mtx;
std::vector<int> data;

void producer() {
for (int i = 0; i < 100; ++i) {
std::lock_guard<std::mutex> lock(mtx);
data.push_back(i);
}
}

void consumer() {
while (true) {
std::lock_guard<std::mutex> lock(mtx);
if (data.empty()) {
// Ждём данные...
std::this_thread::sleep_for(
std::chrono::milliseconds(10));
continue;
}
std::cout << data.back() << "\n";
data.pop_back();
}
}


Вопрос: что не так с consumer()? Почему lock_guard здесь — плохой выбор и как это исправить?


📍Навигация:
ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Что выведет программа?
Anonymous Quiz
11%
1 1 1
49%
1 1 0
31%
1 0 1
7%
0 0 1
2%
0 1 0
👍2🤔2