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_t
может быть целым. Для значений
t1
и
t2
, возвращаемых функцией
clock
, величина
double(t2–t1)/CLOCKS_PER_SEC
является наилучшим системным приближением времени в секундах, прошедшего между двумя вызовами.
Если функция
clock
не поддерживается процессором или временной интервал слишком длинный, то функция
clock
возвращает значение
clock_t(–1)
.
Б.10.6. Другие функции
В заголовке
<cstdlib>
определены следующие функции.
Функция для сравнения (
cmp
), используемая функциями
qsort
и
bsearch
, должна иметь следующий тип:
int (*cmp)(const void* p,const void* q);
Иначе говоря, функции сортировки не известен тип упорядочиваемых элементов: она просто интерпретирует массив как последовательность байтов и возвращает целое число, удовлетворяющее следующим условиям:
• оно является отрицательным, если
*p
меньше, чем
*q
;
• оно равно нулю, если
*p
равно
*q
;
• оно больше нуля, если
*p
больше, чем
*q
.
Подчеркнем, что функции
exit
и
abort
не вызывают деструкторы. Если хотите вызывать деструкторы для статических объектов и объектов, созданных автоматически (см. раздел A.4.2), генерируйте исключение.
Более полную информацию о функциях из стандартной библиотеки можно найти в книге K&R или другом авторитетном справочнике по языку С++.
Б.11. Другие библиотеки
Исследуя возможности стандартной библиотеки, вы, конечно, не найдете чего-то, что могло бы быть полезным для вас. По сравнению с задачами, стоящими перед программистами, и огромным количеством доступных библиотек, стандартная библиотека языка C++ является довольно скромной. Существует много библиотек, предназначенных для решения следующих задач.