我需要以下数据结构来存储一些数据:

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>() ;
}


我也似乎不了解如何将矢量和映射初始化为实例成员以及何时嵌套的详细信息,所以我也希望对此有所解释。

最佳答案

如果使用operator[],则不必要。当使用operator[]引用尚不存在的元素时,将自动创建一个条目,且mapped_type值将被初始化。

09-08 00:56