为什么我需要包括<vector>才能使用它们?
why do i need to include <vector> to use them?
我是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++程序将不知道你使用了什么,因为它甚至不知道它们。它就像:
你想和吉姆的狗一起玩,但你不知道吉姆是谁,或者是什么 狗是。
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中用vector填充一个简单的动态数组
- vector.resize()中的分配错误
- 使用std::vector的OpenCL矩阵乘法
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 在某些循环内使用vector.push_back时出现分段错误
- 当vector是tje全局变量时,c++中vector的内存管理
- std::vector的包装器,使数组的结构看起来像结构的数组
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 为什么(-1)%vector::size()总是返回0
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 为什么 cmake 许可证<>样式不包括?
- 在C++中将类(带有Vector成员)保存为二进制文件
- 计算平均值,不包括上次得分
- 编译器如何区分std::vector的构造函数
- 将 int 数组转换为 std::vector<int*>
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 从多个源构造一个对象,包括一个对象向量
- <vector> 即使它已经包含在例如或其他人中,我是否应该包括<regex>?
- 为什么我需要包括<vector>才能使用它们?