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::stack40バイトかかるのですか?std::vectorcharクラスのサイズに影響しdoubleないのはなぜですか? テンプレのせい?