STL 向量实现 header 大小
STL vector implementation header size
C++ 中是否有这样的要求
sizeof(std::vector<T>) == sizeof(std::vector<S>)
其中 S
和 T
是任意 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
C++ 中是否有这样的要求
sizeof(std::vector<T>) == sizeof(std::vector<S>)
其中 S
和 T
是任意 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