为什么这个代码在没有矢量头文件的情况下运行



我不明白为什么下面的代码在我的本地系统上运行良好,而不包括矢量头文件,但在在线评委或在线编译器上却不正常。

#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,但我不知道它们之间的关系。

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

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

最新更新