我想在 C++ 中使用 HashMap,其中存储的对象是自定义类的实例。这个自定义类只有一个构造函数,我需要设置一个参数。
HashMap 允许通过其构造函数设置其中对象的默认值:HashMap(const mapped_type &v)
。
问题是我不确定如何使用它。
假设我的自定义类名为 Foo
并且需要为其构造函数提供一个 int。
如果我希望 HashMap
中的所有对象都被实例化为值 3,我应该这样做吗?
HashMap<String, Foo> myMap(Foo(3));
是否需要在Foo
中实现拷贝构造函数?
编辑:我必须使用特定的 HashMap,因此必须使用给定的构造函数来处理默认值。
最佳答案
这个
HashMap<String, Foo> myMap(Foo(3));
应该可以工作,您正在创建类 Foo 的临时对象并将其绑定(bind)到 HashMap 在构造函数中采用的 const Foo& 这是允许的。
现在,如果在插入默认值时,HashMap 正在从某个已保存的默认 Foo 成员进行复制,那么是的,Foo 将需要一个复制构造函数。 请记住,编译器会为您生成一个复制构造函数,只有在您需要特别注意时才应该编写自己的复制构造函数(例如,如果某些成员是动态分配的)
关于c++ - C++ 中自定义类的 HashMap 中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37966926/