使用 swap() 而不#include 其库?

Jas*_*per 5 c++ swap c++11

我有一个简单的程序,我在其中int按升序或降序排列数组的元素,然后使用该swap()函数来移动元素。我编译的程序没有任何错误,它运行得非常好。后来我才注意到,我在编译之前忘记#includeswap()(<algorithm><utility>as of C++11) 中定义的库。

为什么它仍然有效?我的程序的顶部是这样的:

#include <iostream>
#include <cstdlib>
using namespace std;
Run Code Online (Sandbox Code Playgroud)

我尝试取出<iostream>,只是想看看会发生什么,它可以预见地抛出一堆'cout/cin/endl' was not declared in this scope错误,但我惊讶地发现它也给出了一些'swap' was not declared in this scope错误。这是否意味着swap()在 中定义<iostream>?我觉得不应该是吧?

无论如何,对于一个简单的答案来说,这可能是一个很长的问题,但我很好奇。我还在学习CC++,所以我不知道很多的事情,我无法找到答案通过“全能”谷歌机这个特殊的神秘感,所以我在这里。

提前致谢!

Min*_*ine 2

一般来说,不要依赖包含其他头文件的头文件。

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

例如,如果您想使用std::swap(),请 Google 一下,您将看到<algorithm>c++98 和<utility>c++11 中是否需要,因此您应该包含该文件以确保您的代码可以编译。