我是C ++的新手并试图弄清楚如何使用vector
。
更具体地说,我想知道何时需要使用#include<vector>
。我问的是因为我看过程序中包含和不使用#include
语句的程序在程序中使用vector
。
答案 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喜欢:
你想和吉姆的狗一起玩,但你不知道吉姆是谁,或者是什么 狗是。