我有以下代码将 LVA 类型的对象存储在 vector 中。 我已经实现了一种将 LVA 对象添加到 vector 的方法。 第一个问题:如果我在此方法中使用对 LVA 对象的引用可以吗?
现在我想实现一个删除 LVA 对象的方法。我想要以下方法签名:void RemoveLVA(LVA& lva)
。我怎样才能实现这个方法?即我如何在 vector 中找到正确的对象以将其删除?
经理.h
class Manager {
public:
Manager();
Manager(const Manager& orig);
virtual ~Manager();
vector<LVA> GetLvas() const;
void AddLva(LVA& lva);
private:
vector<LVA> lvas;
};
管理器.cpp:
#include "Manager.h"
Manager::Manager() {
}
Manager::Manager(const Manager& orig) {
}
Manager::~Manager() {
}
vector<LVA> Manager::GetLvas() const {
return lvas;
}
void Manager::AddLva(LVA& lva) {
lvas.push_back(lva);
}
最佳答案
Is it okay if i use a reference to the LVA object in AddLva(LVA& lva)?
是的,在 push_back()
完成后,std::vector
将拥有原始对象的拷贝。
How can I implement RemoveLVA(LVA& lva)?
您需要在 vector 中找到对象。 (如果为 LVA
定义了 operator==()
,您可以使用 std::find()
。)然后调用 erase ()
vector 的函数。
关于c++ - 从 vector 中删除自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17576329/