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

time_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".

Рассмотрим пример использования функции clock для измерения времени работы функции (do_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


  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. Другие функции

В заголовке определены следующие функции.



Функция для сравнения (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++ является довольно скромной. Существует много библиотек, предназначенных для решения следующих задач.

• Графические пользовательские интерфейсы.

• Сложные математические вычисления.

• Доступ к базам данных.

• Работа в сети.

• XML.

• Дата и время.

• Система манипуляции файлами.

• Трехмерная графика.

• Анимация.

• Прочее


Тем не менее эти библиотеки не являются частью стандарта. Вы можете найти их в Интернете или спросить у своих друзей и коллег. Не следует думать, что полезными являются только библиотеки, представляющие собой часть стандартной библиотеки.

Приложение В

Начало работы со средой разработки Visual Studio

“Вселенная не только страннее,

чем мы себе представляем,

но и страннее, чем мы можем представить”.

Дж. Б.С. Холдейн (J.B.S. Haldane)


В этом приложении описаны шаги, которые необходимо сделать до того, как вы войдете в программу, скомпилируете ее и запустите на выполнение с помощью среды разработки Microsoft Visual Studio.

В.1. Запуск программы

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже