Ale*_*org 3 c++ dictionary copy-constructor
必须将不可复制类的实例填充到地图中。例如使用此代码:
#include <map>
class NoCopyClass
{
public:
NoCopyClass() {};
NoCopyClass(int value) {};
NoCopyClass& operator=(const NoCopyClass&) = delete;
};
int main()
{
std::map<int, NoCopyClass> my_map;
my_map[3] = NoCopyClass(20);
}
Run Code Online (Sandbox Code Playgroud)
除非您注释掉复制构造函数的删除,否则无法编译。你可以在这里试试:https : //onlinegdb.com/ByBh0NubU
当类不可复制时,添加新地图元素的正确方法是什么?
非常感谢!
尝试使用emplace()就地构造对象而不是复制已经构造的对象:
int main()
{
std::map<int, NoCopyClass> my_map;
my_map.emplace(3, 20);
}
Run Code Online (Sandbox Code Playgroud)