使用swap()而没有#including其库?

时间:2014-05-04 05:18:08

标签: c++ c++11 swap

我有一个简单的程序,其中我按升序或降序排列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;谷歌机器,所以我在这里。

提前致谢!

1 个答案:

答案 0 :(得分:2)

通常, NOT 依赖于包含其他头文件的头文件。

始终包含包含您需要的标头文件。

例如,如果你想使用std::swap(),谷歌和你将会看到c ++ 98中的<algorithm>和c ++ 11中的<utility>是否需要{{1}},所以你应该包含该文件以确保你的代码编译。