首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

stl中地图插入对象的时候为何创建了两个临时对象

2012-10-19 
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构造函数

热点排行