c++ - C++ 中自定义类的 HashMap 中的默认值

标签 c++ dictionary hash constructor

我想在 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/

相关文章:

c++ - 与引用 lambda 崩溃异步

java - 从 Controller 更改组合框值

c# - 允许使用 AES 256 为 HMAC 解密任何数据

php - 在 php 中使用 django 密码进行身份验证

c++ - 字符串/句子的最接近匹配算法不起作用?

c++ - 编译琐事 : error ' ... ' does not name a type

python - 对嵌套字典条目求和

Python3 字典值被覆盖

json - 在 Perl 中,如何查询 JSON::Path 对象并返回匹配元素的路径?

c++ - 在线程中运行 lambda 时如何减少拷贝?