Стандартная библиотека C++<chrono>
Введено в C++11<chrono>Библиотека используется для работы со временем и датами. Она предоставляет богатый набор инструментов для измерения временных интервалов, выполнения вычислений с моментами времени и обработки дат и времени.<chrono>Библиотека является ключевой частью стандартной библиотеки C++ для обработки операций, связанных со временем.
Основные концепции
Моменты времени
Момент времени представляет собой конкретную точку во времени, обычно связанную с определёнными часами.
Длительности
Длительность представляет собой временной интервал между двумя моментами времени.
Часы
Часы — это источник моментов времени и длительностей. C++ предоставляет несколько различных часов, таких как системные часы, часы с высоким разрешением и другие.
Базовый синтаксис
Включение заголовочных файлов
При использовании<chrono>Перед использованием библиотеки необходимо включить соответствующий заголовочный файл:
#include <chrono>
Использование моментов времени
auto now = std::chrono::system_clock::now();
Использование длительностей
auto duration = std::chrono::seconds(5);
Вычисление моментов времени
auto future_time = now + duration;
Пример
Измерение времени выполнения функции
Ниже приведён пример использования<chrono>Простой пример измерения времени выполнения функции с помощью библиотеки:
Пример
#include <chrono>
void someFunction() {
// Имитация некоторых операций
std::this_thread::sleep_for(std::chrono::seconds(1));
}
int main() {
auto start = std::chrono::high_resolution_clock::now();
someFunction();
auto end = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
std::cout << "Функция заняла " << duration.count() << " миллисекунд на выполнение." << std::endl;
return 0;
}
Результат вывода:
Function took 1000 milliseconds to execute.
Обработка дат и времени
<chrono>Библиотека также может использоваться для работы с датами и временем. Ниже приведён пример использованияstd::chrono::system_clockиstd::chrono::time_pointПример получения текущей даты и времени:
Пример
#include <chrono>
#include <ctime>
int main() {
auto now = std::chrono::system_clock::now();
std::time_t now_c = std::chrono::system_clock::to_time_t(now);
std::cout << "Current date and time: " << std::ctime(&now_c);
return 0;
}
Результат вывода:
Current date and time: Fri Mar 11 12:34:56 2022
Продвинутое использование
Использование разных часов
C++ предоставляет несколько часов, например:
std::chrono::system_clock: Системные часы, обычно синхронизированные с системным временем.std::chrono::steady_clock: Монотонные часы, не зависящие от изменений системного времени.std::chrono::high_resolution_clock: Предоставляет часы с наивысшим разрешением.
Форматирование даты и времени
Вы можете использовать<iomanip>и<ctime>для форматирования даты и времени:
Пример
#include <iomanip>
#include <chrono>
#include <ctime>
int main() {
auto now = std::chrono::system_clock::now();
std::time_t now_c = std::chrono::system_clock::to_time_t(now);
std::cout << std::put_time(std::localtime(&now_c), "%Y-%m-%d %H:%M:%S");
return 0;
}
Результат вывода:
2022-03-11 12:34:56Другие расширения