我sizeof()
对一些 C++ 标准库类感到好奇和应用运算符。这是我观察到的:
int main()
{
vector<double> v1;
set<double> s1;
map<double,double> m1;
stack<char> st;
queue<char> q;
vector<char> v2;
set<char> s2;
map<char,char> m2;
cout<<sizeof(v1)<<" "<<sizeof(s1)<<" "<<sizeof(m1)<<endl;
cout<<sizeof(v2)<<" "<<sizeof(s2)<<" "<<sizeof(m2)<<endl;
cout<<sizeof(q)<<" "<<sizeof(st)<<endl;
return 0;
}
我的系统(64 位)上的输出是:
12 24 24
12 24 24
40 40
我知道std::set
使用红黑树来实现。因此,二叉树的每个节点都有两个指针(每个 8 个字节),值(8 个字节,总共 24 个)似乎没问题。
std::map
(也使用红黑树)有一个额外的密钥,但仍然是 24 字节?为什么?为什么只占用 12 个字节
std::queue
而占用std::stack
40 个std::vector
字节?为什么
char
并且double
不影响班级的规模?是因为模板吗?