我有一个奇怪的问题,我无法理解:C++:使用指向unordered_map的指针,或者只是将它定义为类中的成员变量?
比方说,我有几个成员字段一个class System
,其中之一是unordered_map
类型的,所以当我在头文件中声明类,我在标题#include <unordered_map>
的开头处写。现在
,我宣布本场的两种方法:在类的构造函数
1.std::unordered_map<std::string,int> umap;
2.std::unordered_map<std::string,int>* p_umap;
现在,如果我选择第一个选项,也没有必要来初始化,因为初始化列表场构造函数class System
将调用umap
字段的默认构造函数,作为构造class System
类型实例的一部分。
Ii我选择了第二个选项,我应该在运算符new和析构函数中初始化构造函数中的初始化列表中的字段p_umap
,以删除此动态分配。
这两个选项有什么区别?如果你有一个类的其中一个字段是unordered_map
类型,那么你如何声明这个字段?作为指针还是作为unordered_map
类型的变量?