STL 向量实现 header 大小

STL vector implementation header size

C++ 中是否有这样的要求

sizeof(std::vector<T>) == sizeof(std::vector<S>)

其中 ST 是任意 copy-assignable 和 copy-constructible 类型?例如,在我的 GCC 的 64 位 Windows 笔记本电脑上,我们有

sizeof(std::vector<int>) == 

sizeof(std::vector<std::tuple<std::vector<double>, 
       int, std::map<int, std::string> > >)

== 24

不,不要求所有 std::vector 专业化的规模都相同。如果需要,编译器可以针对不同的专业化使用不同的布局和大小。

在实践中,一个例子是 vector<bool>,它恰好在至少一个 instance:

中给出了不同的结果
std::cout << sizeof(std::vector<int>);   // 24
std::cout << sizeof(std::vector<bool>);  // 40