Программирование. Принципы и практика использования C++ Исправленное издание, стр. 434

Структура
tmstruct tm { int tm_sec; // секунда минуты [0:61]; 60 и 61 //"високосные" секунды int tm_min; // минута часа [0,59] int tm_hour; // час дня [0,23] int tm_mday; // день месяца [1,31] int tm_mon; // месяц года [0,11]; 0 — январь (примечание: не [1:12]) int tm_year; // год с 1900- го года ; 0 — 1900-й год, // 102 — 2002-й год int tm_wday; // дни, начиная с воскресенья [0,6]; 0 — воскресенье int tm_yday; // дней после 1 января [0,365]; 0 — 1 января int tm_isdst; // часы летнего времени};Функции для работы с датами и временем
clock_t clock(); // количество тактов таймера после старта программыtime_t time(time_t* pt); // текущее календарное // времяdouble difftime(time_t t2, time_t t1); // t2–t1 в секундахtm* localtime(const time_t* pt); // локальное время для *pttm* gmtime(const time_t* pt); // время по Гринвичу (GMT) tm для // *pt или 0time_t mktime(tm* ptm); // time_t для *ptm или time_t(–1)char* asctime(const tm* ptm); // представление *ptm в виде // C-строкиchar* ctime(const time_t* t) { return asctime(localtime(t)); }Пример результата вызова функции
asctime()"Sun Sep 16 01:03:52 1973\n"Рассмотрим пример использования функции
clockdo_something()int main(int argc, char* argv[]){ int n = atoi(argv[1]); clock_t t1 = clock(); // начало отсчета if (t1 == clock_t(–1)) { // clock_t(–1) означает "clock() // не работает " cerr << "Извините, таймер не работает \n"; exit(1); } for (int i = 0; i<n; i++) do_something(); // временной цикл clock_t t2 = clock(); // конец отсчета if (t2 == clock_t(–1)) { cerr << "Извините, таймер переполнен \n"; exit(2); } cout << "do_something() " << n << " работала " << double(t2–t1)/CLOCKS_PER_SEC << " секунд " << " (точность измерения: " << CLOCKS_PER_SEC << " секунд )\n";}Явное преобразование
double(t2–t1)clock_tt1t2clock()double(t2–t1)/CLOCKS_PER_SECЕсли функция
clock()clock()clock_t(–1)Б.10.6. Другие функции
В заголовке
<cstdlib>
Функция для сравнения (
cmpqsort()bsearch()int (*cmp)(const void* p,const void* q);Иначе говоря, функции сортировки не известен тип упорядочиваемых элементов: она просто интерпретирует массив как последовательность байтов и возвращает целое число, удовлетворяющее следующим условиям:
• оно является отрицательным, если
*p*q• оно равно нулю, если
*p*q• оно больше нуля, если
*p*qПодчеркнем, что функции
exit()abort()Более полную информацию о функциях из стандартной библиотеки можно найти в книге K&R или другом авторитетном справочнике по языку С++.
Б.11. Другие библиотеки
Исследуя возможности стандартной библиотеки, вы, конечно, не найдете чего-то, что могло бы быть полезным для вас. По сравнению с задачами, стоящими перед программистами, и огромным количеством доступных библиотек, стандартная библиотека языка C++ является довольно скромной. Существует много библиотек, предназначенных для решения следующих задач.