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
実装に赤黒木を使用していることは知っています。したがって、バイナリ ツリーの各ノードには 2 つのポインター (それぞれ 8 バイト) があり、値 (8 バイト、合計 24) は問題ないようです。
std::map
(Red-Black ツリーも使用) には追加のキーがありますが、それでも 24 バイトですか? なんで?12バイトしかかからないのに
std::queue
、なぜstd::stack
40バイトかかるのですか?std::vector
char
クラスのサイズに影響しdouble
ないのはなぜですか? テンプレのせい?