vector
фактически не встроен в C++, это только часть его стандартной библиотеки, которая, как гарантируется, будет доступна вам, если вы используете C++. vector
(или, по его полному имени, std::vector
) сам реализован на C++.
Написав #include <vector>
, вы сообщаете компилятору не только использовать свой собственный код, но и скомпилировать файл с именем vector
. Этот файл находится где-то на вашем жестком диске (если вы используете GNU/Linux, вероятно, он находится в /usr/include/c++/[GCC_VERSION]/vector
).
Вы не можете использовать std::vector
без включения этого файла, потому что компилятор тогда не знает класс под названием std::vector
. Компилятор знает только язык C++, а не его стандартную библиотеку!
Если в некоторых программах используется std::vector
без включения его заголовочного файла, это связано с тем, что некоторые файлы заголовков, которые они уже включили, имеют #include <vector>
. Для этого могут быть веские причины (например, некоторые курсы на C++ поставляются с файлом, который содержит все необходимые заголовки и который используется в первых нескольких уроках). Однако могут быть также стандартные заголовки библиотек, которые включают vector
(некоторые реализации iostream
делают это). Опираясь на это, это не очень хорошая идея, потому что она отличается от реализации до реализации, поэтому ваша программа может работать в Visual C++ 2010, но она не компилируется в GNU или в более новой версии Visual C++.
Ну, так работает C++. Вы должны включить заголовочные файлы, чтобы получить декларации за то, что вы используете. –
Если вы используете что-то из стандартного заголовка, включите этот заголовок. Делает жизнь приятной и легкой, если вы будете следовать этому поведению. – NathanOliver
Если вы используете директиву '# include' в файле, то это в основном то же самое, что и удаление всего содержимого этого файла с ссылкой в ваш источник. Таким образом, если файл, на который вы ссылаетесь, имеет свои собственные, эти файлы также будут помещены в ваш источник. –