必须将不可复制类的实例填充到 map 中。例如使用此代码:

#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);
}

除非您注释掉复制构造函数的删除,否则无法编译。
你可以在这里尝试:https://onlinegdb.com/ByBh0NubU

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

非常感谢!

最佳答案

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

int main()
{
    std::map<int, NoCopyClass> my_map;
    my_map.emplace(3, 20);
}

关于c++ - 如何在没有复制构造函数的情况下为 map 设置值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59894042/

10-11 19:50