在哪里可以找到 std::bitset 的数据成员?



当我阅读cpp首选项上的bitset页面时,我试图找到一些数据成员列来查看数据的存储方式。我发现没有这样的列,也没有另一个 std 类,例如std:string.然后我去 https://github.com/llvm-mirror/libcxx/blob/master/include/bitset,检查位集概要注释部分,我找不到关于它的数据成员。为什么?我在这里错过了什么?任何标准类的示例将不胜感激。

CppReference记录了公共接口,这是标准要求的唯一内容,也是您应该关心的内容。

libc++ 标头的概要也是如此:它只是标准的复制粘贴,可能作为库实现者的参考放在那里。您可以在下面找到实现的细节。

STL 容器的数据成员是你不应该关心的实现细节,并且可能会发生变化,无论是在各种标准库实现之间,还是对于同一库的不同版本,甚至不同的编译标志。

检查libcxx实现,以下受保护的数据成员是实际位的实现方式。

https://github.com/llvm-mirror/libcxx/blob/master/include/bitset#L163

template <size_t _N_words, size_t _Size>
class __bitset {
public:
typedef size_t __storage_type;
// ...
protected:
// ...
__storage_type __first_[_N_words]; // <========= the data
};
// ...
template <size_t _Size>
class _LIBCPP_TEMPLATE_VIS bitset
: private __bitset<
_Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1, _Size>
{ /* ... */ };

最新更新