为什么这段代码 运行 没有 vector 头文件?

Why is this code running without vector header file?

我无法找出为什么下面的代码在我的本地系统上运行良好而不包含矢量头文件,但在在线法官或在线编译器上却不能。

#include<iostream>
#include<algorithm>

using namespace std;

int main(){
    vector<int> v(10);
    for(int i = 0; i<10; i++) v[i] = i;
    sort(v.begin(),v.end());
    for(int i = 0; i<10; i++) cout<<v[i]<<" ";
    return 0;
}

我正在通过启用 g++ -Wall -Wextra ./ex.cpp 警告标志来编译代码,但 g++ 根本没有给我任何警告。删除 #include<algorithm> 确实给了我想要的错误,identifier "vector" is undefined,但我不知道它们之间有什么关系。

您的算法 header 本身包含向量 header(直接或间接)。因此,预处理器之后的代码看起来就像您自己包含向量 header 一样。

尽管如此,您不应该依赖这种行为,因为它取决于您使用的标准库实现,并且可以随时更改。