是否可以在析构函数中清除向量
is it ok to clear vector in a destructor
class M {
};
class E {
public:
~E();
private:
MyVector mv;
};
E::~E() {
mv.clear()
}
typedef MyHashMap<M*, E*> EMap;
typedef MyHashMap<M*, E*>::iterator EMapItr;
class A : public class Base {
public:
~A();
const EMap& getEMap() { return p_emap};
virtual void func();
protected:
EMap p_Map;
};
A::~A() {
EMapItr eMItr = p_Map.beginRandom();
for(; eMItr; ++eMItr) {
delete eMItr.value();
}
}
class DB {
public fill(EMap* p_Map);
};
class Derived: public A {
private:
DB dp;
};
class GUI {
public:
void guiFunc();
}
void GUI:guiFunc() {
Derived* d = new Derived;
d->func();
}
void Derived::func() {
db.fill(&p_map);
}
请注意,MyHashMap是我定制的哈希地图。 功能与标准:哈希地图相同请注意,MyVector是std::vector的自定义形式。功能与标准相同:矢量
我不想删除 M 类 M* 的指针
以下代码是否正确,或者您是否看到任何问题
A::~A() {
EMapItr eMItr = p_Map.beginRandom();
for(; eMItr; ++eMItr) {
delete eMItr.value();
}
}
此外,我们是否需要清除如下所示的矢量,否则它将自动处理 E::~E() { mv.clear() }
标准库容器不需要在析构函数中清除,因为它们负责自己的内存管理。最好对自定义容器执行相同的操作,因为这通常是预期的,无论如何都是避免内存问题的最佳方法。
相关文章:
- 清除结构向量时会发生什么?
- 在不同的线程中调用向量析构函数或清除
- 向量:清除它与删除它
- 在函数返回时,清除了添加到一对int和字符串向量的矢量中的元素
- C++:清除嵌套向量会导致奇怪的结果
- 将原始指针向量清除给由独特指针拥有的对象
- 当程序输入主要功能时,为什么要清除此std ::向量
- 当负载/清除大量数据时,STD ::向量越慢
- 为什么在向量的向量上使用 clear() 不会清除这些向量的值?
- 在c++中清除对的向量
- 是否可以在析构函数中清除向量
- 清除向量时,stl 向量中的 stl 向量是否超出范围?
- 向量:清除/pop_back不会运行析构函数
- 如何在c++中清空/清除向量和数组
- 如何在<Mat>opencv c++中有效地清除向量
- 清除向量空间
- 清除向量会影响它的容量吗?
- C++ 复制构造函数清除 向量<基*> 派生*
- 清除向量<pointer>,然后重用它
- 清除向量并让一个向量等于另一个向量