我试图了解如何初始化 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];
单独编写表达式会创建一个对象(但是如何?)
提前致谢!