为什么我需要包含<vector>来使用它们?

时间:2016-07-06 15:59:32

标签: c++ vector

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

更具体地说,我想知道何时需要使用#include<vector>。我问的是因为我看过程序中包含和不使用#include语句的程序在程序中使用vector

4 个答案:

答案 0 :(得分:7)

当您看到使用std::vector但未#include <vector>的代码,该代码已损坏时。周期。

在特定的编译器/标准库实现/平台/行星上工作可能“恰好”,这取决于其他标准标题“恰好如此”已包含<vector>供自己使用。这不应该依赖。

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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

  

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