stl中地图插入对象的时候为何创建了两个临时对象
stl中map插入对象的时候为何创建了两个临时对象?以下m_requestMap是mapint, Request对象,在执行这句代码
stl中map插入对象的时候为何创建了两个临时对象?
以下m_requestMap是map<int, Request>对象,在执行这句代码时
C/C++ code m_requestMap.insert( map<int, Request>::value_type(request.GetId(),request))
调用了两次Request拷贝构造函数,我原以为只需要拷贝一次,这是什么原因?是我用法有误还是确实就是那样的?
由于为了避免管理内存的麻烦所以不打算用map<int, Request*>存指针.
[解决办法]用VS2010,它支持C++11里面的move功能,可能会帮助你。
[解决办法]你自己构造request要调用一次。
当你构造value_type的时候构造第二次。
当value_type被插入map中,构造第三次。
[解决办法]编译器支持c++11的话,Request类中增加一个move构造函数