必须将不可复制类的实例填充到 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/