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