我有以下向量:
vector<boost::shared_ptr<Entity>> entities;
为了重置我正在使用的向量erase
entities.erase(entities.begin(), entities.end());
这个程序正确吗?会导致内存泄漏吗?我还应该删除FactClass吗?
类的构造函数将类型Entity
为的共享指针的向量作为参数FactClass
class Entity
{
public:
Entity(std::vector<boost::shared_ptr<FactClass>>);
vector<boost::shared_ptr<FactClass>> getClassFact() const;
private:
vector<boost::shared_ptr<FactClass>> _listFacts;
};
类的构造函数FactClass
将类型Fact
等共享指针的向量作为参数。
class FactClass
{
public:
FactClass(std::vector<boost::shared_ptr<Fact>>);
std::vector<boost::shared_ptr<Fact>> getFacts() const;
private:
vector<boost::shared_ptr<Fact>> _fact;
};
clear()的定义是带有线性复杂度的Erase()。在擦除中,我们将范围作为参数提供,而clear是整个范围的擦除实现。
与...相同
并且它们使向量的Capacity()保持不变,因此没有内存泄漏。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句