Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
STL5 / lab0-introduction / lab0-Introduction-Overview.doc
Скачиваний:
8
Добавлен:
10.04.2015
Размер:
70.66 Кб
Скачать

Организация стандартной библиотеки

Средства стандартной библиотеки определены в пространстве имён stdи представлены набором заголовочных файлов. Следует обратить внимание на то, чтоимена заголовочных файлов имеют вид <X>, а не <X.h>, например <vector>, <map>, <list>. И хотя некоторые компиляторы поддерживают заголовочный файлы в виде <X.h>, например <vector.h>, не следует использовать эту возможность, так как она не соответствует стандарту языка.

Стандартный заголовочный файл, имя которого начинается с буквы c(за исключением<complex>), эквивалентен заголовочному файлу в стандартной библиотекеC. Для каждого заголовочного файла<X.h>, определяющего часть стандартной библиотеки в глобальном пространстве имён, существует заголовок<cX>, определяющий эти же имена в пространстве имёнstd.Однако при использовании заголовочных файлов вида<cX> нет необходимости явно указывать пространство имен std, так как все имена уже явно введены в глобальное пространство имен.

Ниже приведены примеры использования заголовочных файлов стандартной библиотеки.

Пример 1. Ввод/вывод в стиле С

#include <stdio.h>

int main(int argc, char* argv[])

{

printf("Hello World!\n");

return 0;

}

Пример 2. Ввод/вывод в стиле С, использование нового заголовочного файла

Использован новый заголовочный файл, в остальном программа не изменилась. Тот факт, что в данном примере функция printfнаходится в пространстве именstd, не влияет на остальной код, так как функцияprintfбыла введена в глобальное пространство имен.

Использование новых заголовочных файлы вида <cX> вместо <X.h>, не требует изменения остального кода

#include <сstdio>

int main(int argc, char* argv[])

{

printf("Hello World!\n");

return 0;

}

Пример 3. Ввод/вывод в стиле С, использование нового заголовочного файла

Пример практически аналогичен предыдущего, за исключением, того что явно показано, что функция printfпринадлежит пространству именstd.

#include <cstdio>

int main(int argc, char* argv[])

{

std::printf("Hello World!\n");

return 0;

}

Пример 4. Ввод/вывод в стиле С++

Необходимо обратить внимание, что в примере явно указано пространство имен в котором находится cout.

#include <iostream>

int main(int argc, char* argv[])

{

std::cout<<"Hello World!\n";

return 0;

}

Пример 5. Ввод/вывод в стиле С++

Пример аналогичен предыдущему за исключением, того, что все имена пространства stdвнесены в глобальное пространство (нет необходимости использовать префиксstd::).

#include <iostream>

using namespace std;

int main(int argc, char* argv[])

{

cout<<"Hello World!\n";

return 0;

}

Пример 6. Ввод/вывод в стиле С++ (нестандартный вариант)

Приведенный ниже код правильно компилируется некоторыми компиляторами, но не соответствует стандарту и поэтому не должен использоваться.

#include <iostream.h>

int main(int argc, char* argv[])

{

cout<<"Hello World!\n";

return 0;

}

Требования стандарта налагают некоторые ограничение на использование заголовочных файлов. Пользователю и разработчику библиотеки не разрешается добавлять или убирать объявления из стандартных заголовочных файлов. Также недопустимо пытаться изменить содержимое заголовочных файлов, определяя макросы до вставки заголовочных файлов, или пытаться изменить смысл объявлений в заголовочных файлах путём объявлений в их контексте.

Для использования возможностей стандартной библиотеки должен быть включён её заголовочный файл. Написание соответствующих объявлений самостоятельно не соответствует стандарту. Дело в том, что некоторые реализации языка C++ могут оптимизировать процесс компиляции, основываясь на включении стандартных заголовочных файлов, а другие обеспечивать оптимизированную реализацию средств стандартной библиотеки, вводимых заголовочными файлами.

Соседние файлы в папке lab0-introduction