#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int arrr[5] = {21,124,1521,123,1};
sort(arrr,arrr+5);
return 0;
}
如上所示,我不使用#include <algorithm>
但我可以使用sort()
功能!为什么?我不知道。
<iostream>
没有#include <algorithm>
请告诉我为什么会这样。
我在Mac OSX上使用Xcode。
答案 0 :(得分:3)
在C ++中,允许包括任何标准头文件(但当然不需要)与包含任何或所有其他标准头文件具有相同的效果。
在这种情况下,似乎<iostreams>
的某些部分实施使用了<algorithm>
中的算法,因此您<iostreams>
的意图也包含了<algorithm>
。
当然,您不想依赖于此 - 在不同的实现上,您的代码可能(通常会)失败。即使更新编译器(或者甚至可能只是使用不同的编译器标志),也可能会阻止编译代码。
答案 1 :(得分:1)
是否未指定标准标头是否包含其他标头。不保证标准标头不包含任何其他标准标头。 Standard (draft)引用:
[图书馆] / [要求] / [符合] / [res.on.headers]
- C ++标头可能包含其他C ++标头。 [剪断]
醇>
所以,std::sort
碰巧被宣布,因为它恰好被<iostream>
包括在内。但这并不是标准所保证的,也不符合标准。