gpt4 book ai didi

c++ - 如何在没有复制构造函数的情况下为 map 设置值?

转载 作者:行者123 更新时间:2023-12-03 18:01:04 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com