c++ - 从 vector 中删除自定义对象

标签 c++ vector

我有以下代码将 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/

相关文章:

c++ - Const_cast 允许将 constness 修改为通向 const 的路径?

c++ - 这个C++代码是什么意思

C++:指针元素 vector 是否会在销毁时自动释放每个指针指向的动态内存?

r - 计算向量中的连续数字

c++ - vector vector 的快速分配

java - 在 block 中声明的变量会发生什么?

C++ Builder 和 Excel Automation,从哪里开始?

c++ - 编译但失败的 C++ std::vector<std::auto_ptr<T>> 示例

c++ - 插入元素后 vector 的容量增加?

Java如何使用ListIterator作为队列?