作为一名C++初级程序员,我注意到无论您使用什么IDE /编译器,您都不需要显式包含stl(标准模板库).这是否意味着我可以依靠stl"始终可用"?
我的意思是,如果我想使用std::cout例如,我只包括iostreamstl 的一部分:
#include <iostream>
Run Code Online (Sandbox Code Playgroud)
......并且不需要像#include <std>以前那样继续做类似的事情:
std::cout << "Hello world!" << std::endl;
Run Code Online (Sandbox Code Playgroud)
此外:我可以依靠stl的一致性吗?stl的每个函数/方法是否总是以相同的方式运行?或者C++版本,操作系统或编译器之间是否有任何变化?
我问这个问题,因为当你不知道某些陷阱时,其他图书馆有时真的很痛苦.例如,Eigen(对于线性代数的东西)对我来说真的很难实现,我注意到一些版本之间改变行为......
是的,尽管允许仅提供子集的独立实现有特殊限制,但C++标准库必须随每个C++编译器一起提供,因为它是语言规范的一部分.(最初作为C++扩展的东西最初被称为标准模板库,但现在更好的术语是C++标准库.)
C++标准库指定得非常好 - 您总是需要包含各种头文件以引入标准库组件.您需要的标头不会从编译器更改为编译器.在这方面,它与机器无关.
随着标准的发展,理念是最小化兼容性中断,但也有一些:例如,在C++ 11中重新定义auto关键字,以及从该标准开始弃用std :: auto_ptr.
大多数组件确实位于保留命名空间std中 - 某些功能不是出于遗留原因.最后,最好使用std :: explicit而不是通过使用将整个std命名空间引入全局std命名空间
using namespace std;
Run Code Online (Sandbox Code Playgroud)
否则,您的代码容易受到命名空间歧义的影响.
| 归档时间: |
|
| 查看次数: |
515 次 |
| 最近记录: |