我有一个简单的程序,其中我按升序或降序排列int
数组的元素,并使用swap()
函数移动元素。我编译了程序没有任何错误,它像一个魅力。之后我才注意到,在编译之前,我忘记了#include
swap()
在(<algorithm>
或[{1}}中定义<utility>
)的库。
为什么它仍然有效?我的程序的顶部看起来像这样:
C++11
我尝试取出#include <iostream>
#include <cstdlib>
using namespace std;
,只是为了看看会发生什么,并且可以预见会发出一堆<iostream>
错误,但我很惊讶地看到它给了一些'cout/cin/endl' was not declared in this scope
错误也是如此。这是否意味着'swap' was not declared in this scope
中定义了swap()
?我不认为它应该是,是吗?
无论如何,对于一个简单的答案来说,这可能是一个很长的问题,但我很好奇。我还在学习<iostream>
和C
,所以我不知道很多事情,而且我无法通过&#找到这个特殊谜团的答案34;全能&#34;谷歌机器,所以我在这里。
提前致谢!
答案 0 :(得分:2)
通常, NOT 依赖于包含其他头文件的头文件。
始终包含仅包含您需要的标头文件。
例如,如果你想使用std::swap()
,谷歌和你将会看到c ++ 98中的<algorithm>
和c ++ 11中的<utility>
是否需要{{1}},所以你应该包含该文件以确保你的代码编译。