加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是否可以在C中使用std :: map,而没有任何拷贝操作符?

发布时间:2020-12-16 03:15:43 所属栏目:百科 来源:网络整理
导读:我正在使用没有任何拷贝操作符的Class(Object):它现在基本上不能被复制.我有一个 的std ::地图 INT,对象对象 列出具有int标识符的对象的变量.如何添加一个对象到这个地图,而不必使用复制运算符? 我试过了 objects.insert(标准::对℃,对象()GT); 但是不会编
我正在使用没有任何拷贝操作符的Class(Object):它现在基本上不能被复制.我有一个

的std ::地图< INT,对象>对象

列出具有int标识符的对象的变量.如何添加一个对象到这个地图,而不必使用复制运算符?
我试过了

objects.insert(标准::对℃,对象()&GT);

但是不会编译.我只想使用默认构造函数最初创建我的对象,但是写入

对象[0];失败…
谢谢 :)

解决方法

在C 03中,存储在STL容器中的对象必须是可复制的.这是因为STL容器的std ::分配器实际上使用新操作符的放置版本来复制在预先分配的内存块中构造对象,并且需要存在复制构造函数来复制对象的实际实例“想要将容器添加到容器分配器预先分配的内存地址中.所以你唯一的选择是将指针存储到对象而不是对象本身.因此,您可以执行以下操作:
std::map<int,std::shared_ptr<Object> > objects;
objects.insert(std::pair<int,std::shared_ptr<Object> >(0,new Object());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读