gpt4 book ai didi

c++ - C++中的标准库实现之间有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 16:01:08 26 4
gpt4 key购买 nike

我可能正像我们德国人所说的那样“走在木头路上”。 (走错路的谚语)

C++ 定义了一个标准库,这个标准在 C++98、C++11、C+17 中经常更新(如果我错了请纠正我)。我假设每个编译器或操作系统都定义了自己的标准库实现。

那么除了明显的操作系统特定部分之外,标准库的这些实现之间有什么区别(如果有的话)?

同一操作系统是否有实现的“变体”?如果是这样,我什么时候会费心使用哪个实现?

最佳答案

基本上每个容器的任何定义都是特定于实现的。该标准仅规定声明和预期行为、副作用和条件。

来自 §21.4.2 的示例:

basic_string(const basic_string& str,
size_type pos, size_type n = npos,
const Allocator& a = Allocator());

Requires: pos <= str.size()

Throws: out_of_range if pos > str.size().

Effects: Constructs an object of class basic_string and determines the effective length rlen of the initial string value as the smaller of n and str.size() - pos, as indicated in Table 65.

如您所见,标准还说明了 std::basic_string 的构造函数什么确实如此,它没有说如何应该实现。它还定义了应该使用的签名。实际实现因编译器供应商而异 - gccclang有不同的实现,虽然它们是针对同一个平台,但是构造函数做同样的事情。

您无需担心实现(好吧,从技术上讲,您需要担心 - 有些实现不会实现所有,但这种情况很少见),因为它们都(应该) 执行标准中记录的所有内容。

关于c++ - C++中的标准库实现之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39310347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com