我需要以下数据结构来存储一些数据:
std::map<int, std::map<unsigned long, std::vector<unsigned long> > > lifetime ;
上面的map
将是一个类的实例成员。问题是,当我第一次访问它们时,是否需要使用new
或构造函数显式初始化内部容器?例如:
if (this->lifetime[sm].find(address) == this->lifetime[sm].end()) {
(this->lifetime[sm])[address] = std::vector<unsigned long>() ;
}
我似乎也不了解矢量和地图如何初始化为实例成员以及嵌套时的细节,所以我也很感激对此的一些解释。
答案 0 :(得分:4)
如果您使用operator[]
则不需要。当operator[]
用于引用尚不存在的元素时,将自动创建一个条目,并初始化mapped_type
值。