如何在没有复制构造函数的情况下为地图设置值?

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

当类不可复制时,添加新地图元素的正确方法是什么?

非常感谢!

Håk*_*and 7

尝试使用emplace()就地构造对象而不是复制已经构造的对象:

int main()
{
    std::map<int, NoCopyClass> my_map;
    my_map.emplace(3, 20);
}
Run Code Online (Sandbox Code Playgroud)