清除嵌套数据
Clearing nested data
我有一个这样的map
数据
std::map<std::string, std::vector<int>> mydata;
该功能mydata.clear();
如何工作?
它是否也清除vector<int>
中的项目?
是否需要先清除vector
项,然后再清除地图?
mydata.clear()
清除map
中的数据。您定义的map
按值存储std::vector<int>
;值 nature 可确保调用向量的析构函数,并且还清除其内容和分配的内存。
从 cpp 首选项;
从容器中删除所有元素。 使引用所包含元素的任何引用、指针或迭代器失效。
vector
的析构函数反过来管理其资源;
破坏容器。调用元素的析构函数,并解除分配使用的存储。请注意,如果元素是指针,则不会销毁指向的对象。
这里的经验法则是容器将管理容器的资源;内存,大小,分配等,容器中的值需要依次管理其资源。这种资源管理的方法和技术通常被称为RAII,被许多人认为是惯用C++。
clear()
的行为是这样定义的:
内容
清晰 从映射容器中删除所有元素(这些元素将被销毁(,使容器大小为 0。
您的地图使用纯vectors
,而不是指针或对它们的引用。这些向量本身存储不需要(也不支持(手动取消分配的普通ints
。
因此,当您调用mydata.clear()
时,map
包含的vectors
将被正确销毁,其内容也将正确销毁。
相关文章:
- 嵌套在类中时无法设置成员数据
- 嵌套结构,从由空行分隔的文件中读取数据
- 如何访问嵌套类的数据?
- 优雅地访问嵌套类中的数据
- 嵌套的 STL 数据结构
- 当使用嵌套类功能时,使用非静态数据成员的使用无效,但是当函数未固定时可以
- 使用MPI/OpenMP的C 程序带有派生数据类型(嵌套类对象)容器
- 访问嵌套结构的数据成员并将结构传递到功能C
- C 嵌套的数据结构利用结构
- 如何在 C++ 中将结构类型向量数据输入到结构向量成员(嵌套结构向量)中
- 为什么链表中的数据在嵌套函数中会更改/损坏?
- 嵌套的C 常数数据结构,没有初始化列表或明确命名所有节点-VC 2012过早破坏了内部元素
- 访问嵌套结构中的数据
- C /STL公共迭代器,用于深嵌套的私人数据
- 从数据成员(一次性嵌套类)中获取非 POD 对象的地址
- 在C++中,如何让(嵌套)比较函子引用封闭类的数据
- HDF5中嵌套的复合数据类型
- 用大量唯一数据填充 c++ 中的嵌套结构
- 链表类,如何访问嵌套节点结构的数据
- 结构化数据:嵌套三角形(使用结构并进行一些几何计算)