使用构造函数初始化 STL 映射
initialize STL map with constructor
我有一个带有STL映射的类和另一个类作为成员变量。
这是我的类定义:
class demo
{
map<int, map<int, string> > mymap;
class temp
{
int a, b;
}
map<string, pair<string, temp*> > mymap1;
demo();
~demo();
}
如何使用构造函数初始化mymap
并mymap1
NULL
。我还想释放使用析构函数temp*
使用的内存。我该怎么做?
您无法初始化mymap
并mymap1
NULL
,因为它们不是指针,而是对象。
如果你想用一些参数初始化它们,你应该在构造函数初始化列表中进行:
demo() : mymap(/* initialization parameters */),
mymap1(/* initialization parameters */) {}
您也不应该像temp*
那样使用原始指针。而是使用智能指针,例如 std::unique_ptr<temp>
.使用智能指针,您不必释放任何内存,因为它会自动为您完成。
您所要做的就是将地图mymap1
的声明更改为:
map<string, pair<string, unique_ptr<temp>>> mymap1;
相关文章:
- STL映射比较器能否以某种方式获取指向映射本身的指针?
- 在 c++ stl 映射中,删除具有重复值的条目
- C++ STL 映射同时更新所有值
- 遍历 STL 映射(集/多集)的最佳方法,同时元素可能会在循环期间被删除并重新插入?
- 无法将元素添加到 STL 映射
- 为什么不能在STL映射中插入值
- 在 stl 映射和列表 (c++) 上进行迭代的泛型循环
- 未签名的char数组到stl ::映射或其他容器中的键
- 整数和元组的静态 STL 映射返回 0
- 指向类的指针的 STL 映射的 SWIG 类型图
- 将 STL 映射存储到 Boost ConstBufferSequence 中
- 如何在下一次函数调用中使用 STL 映射擦除从最后一个位置
- 如何使用密钥 2 更新 STL 映射键 1 并将值复制到键 2 中
- 为什么当代码尝试在 STL 映射中查找键时出现分段错误
- 快速插入STL映射
- C STL映射中的SegFault由于过程退出期间的静态可变清理而找到
- 如何将 STL 映射保存到文件C++
- C++STL映射键和值工作不正常
- STL 映射自定义比较器
- 带有内存比较的 STL 映射.如何在运行时设置比较块大小