STL向量实现头大小

use*_*927 2 c++ stdvector

C++中有这样的要求吗

sizeof(std::vector<T>) == sizeof(std::vector<S>)
Run Code Online (Sandbox Code Playgroud)

哪里ST是任意可复制分配和可复制构造的类型?例如,在我的 64 位 Windows 笔记本电脑上,GCC我们有

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

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

== 24
Run Code Online (Sandbox Code Playgroud)

cig*_*ien 6

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

在实践中,一个例子是vector<bool>在至少一个实例中恰好给出了不同的结果:

std::cout << sizeof(std::vector<int>);   // 24
std::cout << sizeof(std::vector<bool>);  // 40
Run Code Online (Sandbox Code Playgroud)