⏰ 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++ разработчика
🤩2❤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++ разработчика #буст
👍2