为什么我需要包括<vector>才能使用它们?

why do i need to include <vector> to use them?

本文关键字:vector 包括 为什么 lt gt      更新时间:2023-10-16

我是C++新手,并试图弄清楚如何使用vector

更具体地说,我想知道什么时候需要使用#include<vector>。我之所以这么问,是因为我见过在程序中使用vector的带有和没有#include语句的程序。

当你看到使用std::vector但未#include <vector>的代码时,该代码被破坏了。时期。

在特定编译器/标准

库实现/平台/行星上工作可能"恰好",这取决于哪些其他标准标头"恰好"已经包含<vector>供自己使用。这不应被依赖。

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++ 上编译。

您可能会看到不直接#include <vector>的代码。但是,如果您检查预处理的代码,我敢肯定您会发现该代码确实包含标头 - 但间接通过其他标头。

这是脆弱的,你不应该这样做。但这并不意味着它不起作用。

您需要包含头文件,以使用任何类型的数据/函数。c++ 中的所有数据类型和函数都包含在它们自己的库中。如果你不包括库,c++程序将不知道你使用了什么,因为它甚至不知道它们。它就像:

你想和吉姆的狗一起玩,但你不知道吉姆是谁,或者是什么 狗是。