使用swap()而不包含它的库
Using swap() without #including its library?
我有一个简单的程序,其中我按升序或降序排列int
数组的元素,并使用swap()
函数来移动元素。我编译了这个程序,没有任何错误,它运行得很好。后来我才注意到,在我编译之前,我忘记了#include
库,swap()
在(<algorithm>
,或C++11
的<utility>
)中定义。
为什么它仍然有效?我的程序的开头是这样的:
#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
和C++
,所以我不知道很多东西,我无法通过"全能"的谷歌机器找到这个特殊谜团的答案,所以我在这里。
提前感谢!
一般来说,不依赖于包含其他头文件的头文件。
总是包含并且仅包含您需要的头文件。
例如,如果你想使用std::swap()
,谷歌它,你会看到如果需要<algorithm>
在c++98和<utility>
在c++11,所以你应该包括文件,以确保你的代码编译。
相关文章:
- Visual C++GC接口如何启用它以及要包含哪个库
- 包含它的模板化类型的shared_ptr
- 当包含头文件的文件不在根项目文件夹中时,如何包含它
- std 不包含,但它应该添加库
- 有没有办法搜索向量的元素,<String>然后检查它是否包含特定的字符,如果它确实打印了它
- 我是否应该在包含虚拟方法的类上使用'memcpy'?如果没有,如何替换它?
- 如果包含引用成员的类中缺少原始变量,为什么它仍然可以访问?
- 这是我的 .h 文件的一些错误,当我在其中包含我的类模板时,它显示 [错误] 未终止 #ifndef
- 对象文件中的未定义引用 - 如何查找哪个库包含它
- .c文件应该包含它的.h文件已经包含的内容吗?
- 当包含它的对象调用其析构函数时,unique_ptr是否未分配
- 运算符 类对象的重载在访问包含它的向量元素时不起作用
- 当我包含它的标头时,为什么我的代码中会出现"use of undefined type"错误?
- 如何在不将glew32.dll放入系统根目录的情况下包含它
- C++,对函数的未定义引用,尽管包含它的标头
- 应用程序如何在c++中删除自己和包含它的文件夹
- 为什么在.cpp文件中包含 <string.h>会导致编译错误(而包含它 .h 文件是可以的)
- C++中的相互包含.它是如何工作的
- 使用swap()而不包含它的库
- 当使用复制构造函数为包含它的变量分配一个新对象时,上一个对象是否已销毁