Fir*_*ger 10 c++ c++-standard-library
正如我们德国人所说的那样,我可能"走在木路上".(谚语走错路)
C++定义了一个标准库,这个标准得到在C++ 98,C++ 11,C + 17(纠正我,如果我错了)经常更新.我假设每个编译器或操作系统都定义了自己的标准库实现.
因此除了明显的操作系统特定部分之外,标准库的这些实现之间有什么不同(如果有的话)?
是否存在针对同一操作系统的实施的"变体"?如果是这样,我什么时候才想打扰使用哪种实现?
基本上每个容器的任何定义都是特定于实现的.标准仅规定了声明和预期的行为,副作用和条件.
§21.4.2中的示例:
Run Code Online (Sandbox Code Playgroud)basic_string(const basic_string& str, size_type pos, size_type n = npos, const Allocator& a = Allocator());要求:
pos <= str.size()抛出:
out_of_range如果pos > str.size().E ff ects:构造一个类的对象,
basic_string并将rlen初始字符串值的有效长度确定为较小的n和str.size() - pos,如表65所示.
正如您所看到的,标准还说明了构造函数的std::basic_string作用,但没有说明它应该如何实现.它还定义了应该使用的签名.实际的实现因编译器供应商而异 - gcc并且clang具有不同的实现,尽管它们用于同一平台,但构造函数执行相同的操作.
你不需要担心实现(从技术上来说,你做了 - 一些实现并没有实现所有的东西,但这很少见),因为它们都应该(应该)完成标准中记录的所有内容.
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |