我有一个简单的程序,我在其中int按升序或降序排列数组的元素,然后使用该swap()函数来移动元素。我编译的程序没有任何错误,它运行得非常好。后来我才注意到,我在编译之前忘记#include了swap()(<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>?我觉得不应该是吧?
无论如何,对于一个简单的答案来说,这可能是一个很长的问题,但我很好奇。我还在学习C和C++,所以我不知道很多的事情,我无法找到答案通过“全能”谷歌机这个特殊的神秘感,所以我在这里。
提前致谢!
一般来说,不要依赖包含其他头文件的头文件。
始终包含并且仅包含您需要的头文件。
例如,如果您想使用std::swap(),请 Google 一下,您将看到<algorithm>c++98 和<utility>c++11 中是否需要,因此您应该包含该文件以确保您的代码可以编译。
| 归档时间: |
|
| 查看次数: |
3070 次 |
| 最近记录: |