前端之家收集整理的这篇文章主要介绍了
是否可以在C中使用std :: map,而没有任何拷贝操作符?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用没有任何拷贝操作符的Class(Object):它现在基本上不能被复制.我有一个
的std ::地图< INT,对象>对象
列出具有int标识符的对象的变量.如何添加一个对象到这个地图,而不必使用复制运算符?
我试过了
objects.insert(标准::对℃,对象()>);
但是不会编译.我只想使用默认构造函数最初创建我的对象,但是写入
对象[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());
原文链接:https://www.f2er.com/c/112073.html