std::map を初期化する方法を理解しようとしています。私はウェブ上で地図を初期化する次の方法を見ました(そのTest& t = mylist[0]
部分に注意してください):
#include <iostream>
#include <map>
using namespace std;
class Test
{
public:
Test():i_(0) { cout<<"Calling constructor"<<endl;}
~Test() { cout <<"Calling destructor"<<endl;}
private:
int i_;
};
int main(int argc, char **argv)
{
map<unsigned,Test> mylist;
cout << "Before "<<mylist.size()<<endl;
Test& t = mylist[0];
cout << "After "<<mylist.size()<<endl;
return 0;
}
素朴に、私は次のように動作することを期待していました。
Test t;
mylist[0] = t;
しかし、なぜ最初の方法が機能するのかを考えると頭が痛くなります! オブジェクトはどのように初期化されますか? mylist[0];
技術的に式だけを書くとオブジェクトが作成されるため、一時的なものですか (しかし、どのように?)
前もって感謝します!