Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что выведет программа?
Anonymous Quiz
77%
Timer created Widget created
5%
Timer created
5%
Widget created
4%
Ничего не выведет
10%
Ошибка компиляции
😢12👾7⚡3😁2❤1
🔥 Вы ещё можете застать старый добрый Proglib — с вечным доступом к курсам.
С 1 августа всё меняется: навсегда — останутся только те, кто успел купить сейчас.
-40% на все курсы. Включая обновлённый Python (кроме курса по AI-агентам)
Это не просто распродажа. Это — последняя точка входа в Proglib Academy по старым правилам.
📚 Выбрать и забрать свой курс навсегда → https://clc.to/TBtqYA
С 1 августа всё меняется: навсегда — останутся только те, кто успел купить сейчас.
-40% на все курсы. Включая обновлённый Python (кроме курса по AI-агентам)
Это не просто распродажа. Это — последняя точка входа в Proglib Academy по старым правилам.
📚 Выбрать и забрать свой курс навсегда → https://clc.to/TBtqYA
❤1
🏖️ Подборка вакансий для C++-разработчиков за неделю
Senior С++ Developer (KPHP) — от 300 000 и до 450 000 ₽ Удалёнка
Разработчик SIP-сервисов — от 350 000 и до 460 000 ₽ Удалёнка
Programmer C++ — 185 000 ₽ Гибрид (Санкт-Петербург)
Developer C++ (KasperskyOS, System services & drivers) — 190 000 ₽ Удалёнка
Библиотека C/C++ разработчика
Senior С++ Developer (KPHP) — от 300 000 и до 450 000 ₽ Удалёнка
Разработчик SIP-сервисов — от 350 000 и до 460 000 ₽ Удалёнка
Programmer C++ — 185 000 ₽ Гибрид (Санкт-Петербург)
Developer C++ (KasperskyOS, System services & drivers) — 190 000 ₽ Удалёнка
Библиотека C/C++ разработчика
⏰ std::chrono — работа со временем
👉 Подключение:
💡 Примеры использования:
Основные типы:
— duration для промежутков времени
— time_point для моментов времени
— clock для источников времени
Часы (clocks):
— system_clock системное время
— steady_clock монотонное время
— high_resolution_clock наивысшая точность
Единицы времени:
— nanoseconds, microseconds, milliseconds
— seconds, minutes, hours
— Пользовательские единицы
Библиотека C/C++ разработчика #буст
Используете time_t и clock() для измерения времени?
std::chrono
в C++11 предоставляет типобезопасную работу со временем. Высокая точность, читаемый код и портабельность.👉 Подключение:
#include <chrono>
using namespace std::chrono;
💡 Примеры использования:
auto start = high_resolution_clock::now();
expensive_operation();
auto end = high_resolution_clock::now();
auto duration = duration_cast<milliseconds>(end - start);
std::cout << "Operation took: " << duration.count() << "ms" << std::endl;
std::this_thread::sleep_for(seconds(2)); // Спать 2 секунды
std::this_thread::sleep_for(milliseconds(500)); // Спать 500 мс
std::this_thread::sleep_for(2s); // C++14 literals
Основные типы:
— duration для промежутков времени
— time_point для моментов времени
— clock для источников времени
Часы (clocks):
— system_clock системное время
— steady_clock монотонное время
— high_resolution_clock наивысшая точность
Единицы времени:
— nanoseconds, microseconds, milliseconds
— seconds, minutes, hours
— Пользовательские единицы
Библиотека C/C++ разработчика #буст
🔥11
This media is not supported in your browser
VIEW IN TELEGRAM
C++ Zero Cost Conf — 2 августа Яндекс проведет прикладную конференцию для C++ специалистов.
Присоединяйтесь онлайн (Москва/Белград) или офлайн (Москва, СПб, Белград), чтобы послушать о реальных кейсах от практикующих C++ разработчиков.
В программе докладов:
— C++20 Модули — практическое внедрение. Антон Полухин (Яндекс) разберет, как использовать C++20 модули в больших существующих проектах с поддержкой старых стандартов на примерах Boost, libstdc++ и libc++.
— Hardening: текущий статус и перспективы развития. Роман Русяев и Юрий Грибов (Huawei) расскажут о средствах защиты критического ПО от UB в проде, их эффективности и влиянии на развитие C++.
— i, j, k и шаблоны: вспоминаем линейную алгебру вместе с Ваней Ходором (Яндекс).
Зарегистрироваться и посмотреть полную программу выступлений можно на сайте.
Присоединяйтесь онлайн (Москва/Белград) или офлайн (Москва, СПб, Белград), чтобы послушать о реальных кейсах от практикующих C++ разработчиков.
В программе докладов:
— C++20 Модули — практическое внедрение. Антон Полухин (Яндекс) разберет, как использовать C++20 модули в больших существующих проектах с поддержкой старых стандартов на примерах Boost, libstdc++ и libc++.
— Hardening: текущий статус и перспективы развития. Роман Русяев и Юрий Грибов (Huawei) расскажут о средствах защиты критического ПО от UB в проде, их эффективности и влиянии на развитие C++.
— i, j, k и шаблоны: вспоминаем линейную алгебру вместе с Ваней Ходором (Яндекс).
Зарегистрироваться и посмотреть полную программу выступлений можно на сайте.
❤3👍1👏1
🧨 C++26 улучшает форматирование чисел
💡 В статье рассматриваются ключевые улучшения std::format в C++26, которые делают работу с форматированием более безопасной, удобной и предсказуемой.
❗ Ключевые моменты статьи:
• Замена sprintf на std::format в std::to_string для более точного вывода чисел;
• Компиляция проверок типов в std::format, что уменьшает количество runtime-ошибок;
• Новые возможности форматирования указателей, включая нулевое заполнение и выбор регистра.
Основной фокус — на практических улучшениях, которые уже доступны в GCC, Clang и MSVC, и их влиянии на существующий код.
Особенно актуально для C++ разработчиков, которые работают с форматированием строк, выводом данных или оптимизацией производительности.
Вы узнаете, как простые изменения в C++26 могут сэкономить ваше время и избавить от скрытых багов, связанных с локалями и неочевидным поведением старых функций. И это только первая часть обновлений — впереди ещё больше улучшений!
👉 Статья
Библиотека C/C++ разработчика
«Почему std::to_string выводит -0.000000 вместо -1e-7? И как C++26 это исправляет!» — такие вопросы часто возникают у разработчиков, работающих с форматированием чисел в C++.
💡 В статье рассматриваются ключевые улучшения std::format в C++26, которые делают работу с форматированием более безопасной, удобной и предсказуемой.
❗ Ключевые моменты статьи:
• Замена sprintf на std::format в std::to_string для более точного вывода чисел;
• Компиляция проверок типов в std::format, что уменьшает количество runtime-ошибок;
• Новые возможности форматирования указателей, включая нулевое заполнение и выбор регистра.
Основной фокус — на практических улучшениях, которые уже доступны в GCC, Clang и MSVC, и их влиянии на существующий код.
Особенно актуально для C++ разработчиков, которые работают с форматированием строк, выводом данных или оптимизацией производительности.
Вы узнаете, как простые изменения в C++26 могут сэкономить ваше время и избавить от скрытых багов, связанных с локалями и неочевидным поведением старых функций. И это только первая часть обновлений — впереди ещё больше улучшений!
👉 Статья
Библиотека C/C++ разработчика
🤩3❤1🙏1
✏️ Промпт дня: Улучшение обработки ошибок
Обработка ошибок — один из самых критичных аспектов разработки на C++. Неправильная обработка исключений может привести к утечкам памяти, неопределенному поведению и краху приложения.
☀️ Решение с помощью AI
Для улучшения системы обработки ошибок в вашем коде используйте следующий промпт:
🧋 Пример трансформации
До:
После (с улучшенной обработкой ошибок):
✏️ Как часто в вашем коде встречаются необработанные ошибки? Пишите в комментариях.
Библиотека C/C++ разработчика #буст
Обработка ошибок — один из самых критичных аспектов разработки на C++. Неправильная обработка исключений может привести к утечкам памяти, неопределенному поведению и краху приложения.
☀️ Решение с помощью AI
Для улучшения системы обработки ошибок в вашем коде используйте следующий промпт:
How can I improve the error handling in my C++ code? [ВАШ КОД]
🧋 Пример трансформации
До:
int divide(int a, int b) {
return a / b; // Деление на ноль = краш
}
std::vector<int> readFile(const std::string& filename) {
std::ifstream file(filename);
std::vector<int> data;
int value;
while (file >> value) {
data.push_back(value);
}
return data; // Что если файл не открылся?
}
После (с улучшенной обработкой ошибок):
#include <stdexcept>
#include <optional>
std::optional<int> divide(int a, int b) {
if (b == 0) {
return std::nullopt;
}
return a / b;
}
std::vector<int> readFile(const std::string& filename) {
std::ifstream file(filename);
if (!file.is_open()) {
throw std::runtime_error("Cannot open file: " + filename);
}
std::vector<int> data;
int value;
while (file >> value) {
data.push_back(value);
}
if (file.bad()) {
throw std::runtime_error("Error reading file: " + filename);
}
return data;
}
✏️ Как часто в вашем коде встречаются необработанные ошибки? Пишите в комментариях.
Библиотека C/C++ разработчика #буст
👍3❤1🤔1
std::vector<std::vector<int> >
с пробелом? Давайте посмотрим, как изменилась работа с типами за 25 лет!//Verbosity nightmare
std::vector<std::pair<std::string, int> > vec; // пробел обязателен!
for (std::vector<std::pair<std::string, int> >::iterator it = vec.begin();
it != vec.end(); ++it) {
// работаем с *it
}
// auto и range-based for
std::vector<std::pair<std::string, int>> vec; // >> теперь OK!
for (auto& item : vec) {
// намного чище!
}
// Не нужно указывать типы
std::vector vec{std::pair{"hello", 42}, {"world", 24}}; // CTAD!
std::optional opt = some_function(); // тип выводится автоматически
// Structured bindings
for (auto [name, value] : vec) {
std::cout << name << ": " << value << "\n";
}
#include <concepts>
template<std::integral T> // Концепты!
auto process(T value) {
return value * 2;
}
// Abbreviated function templates
auto add(std::integral auto a, std::integral auto b) {
return a + b;
}
// if consteval для compile-time проверок
constexpr auto get_value() {
if consteval {
return 42; // compile-time версия
} else {
return expensive_runtime_calc(); // runtime версия
}
}
// Multidimensional subscript operator
matrix[1, 2, 3] = value; // вместо matrix[1][2][3]
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤1
😈 Modules в C++20 - будущее или очередной провал?
5 лет назад: "Modules решат все проблемы! Быстрая компиляция! Настоящая инкапсуляция!"
2025 год: Поддержка модулей все еще экспериментальная, build системы путаются, а простой hello world на модулях собирается в 3 раза дольше классического 😅
🐊 Реальность модулей:
- CMake = beta поддержка
- Legacy код = не портируется
- Compile times = пока что хуже
😡 Парадокс:
Хотели ускорить компиляцию, получили новые проблемы с build системами.
Но справедливости ради - концепция правильная. Проблема в том, что экосистема не готова. Может через 5 лет будет по-другому?
💡 Сравнение:
❓ Вопрос:
Стоит ли уже сейчас изучать modules или подождать еще пару лет?
🔥 Уже использую в пет проектах
⚡️ Изучаю, но не применяю
👾 Жду стабилизации
❤️ Пока что #include рулит
Библиотека C/C++ разработчика #междусабойчик
Modules обещали революцию, а получили головную боль!
5 лет назад: "Modules решат все проблемы! Быстрая компиляция! Настоящая инкапсуляция!"
2025 год: Поддержка модулей все еще экспериментальная, build системы путаются, а простой hello world на модулях собирается в 3 раза дольше классического 😅
- CMake = beta поддержка
- Legacy код = не портируется
- Compile times = пока что хуже
Хотели ускорить компиляцию, получили новые проблемы с build системами.
Но справедливости ради - концепция правильная. Проблема в том, что экосистема не готова. Может через 5 лет будет по-другому?
// Классика: работает везде
#include <iostream>
#include "my_header.h"
// Modules: работает... иногда... если повезет
import std.io;
import my.module;
Стоит ли уже сейчас изучать modules или подождать еще пару лет?
🔥 Уже использую в пет проектах
⚡️ Изучаю, но не применяю
👾 Жду стабилизации
Библиотека C/C++ разработчика #междусабойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👾9⚡2🔥2