1

タイプ LVA のオブジェクトをベクターに格納する次のコードがあります。ベクトルに LVA オブジェクトを追加するメソッドを実装しました。最初の質問: このメソッドで LVA オブジェクトへの参照を使用しても問題ありませんか?

ここで、LVA オブジェクトを削除するメソッドを実装したいと考えています。次のメソッド シグネチャが必要です: void RemoveLVA(LVA& lva). このメソッドを実装するにはどうすればよいですか? つまり、ベクター内の適切なオブジェクトを見つけて削除するにはどうすればよいですか?

Manager.h

class Manager {
public:
    Manager();
    Manager(const Manager& orig);
    virtual ~Manager();
    vector<LVA> GetLvas() const;
    void AddLva(LVA& lva);
private:
    vector<LVA> lvas;

};

Manager.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);
}
4

6 に答える 6

0

はい、add メソッドと remove メソッドで LVA オブジェクトを ref として渡しても問題ありません。add と remove はオブジェクトに影響を与えないと思うので、これらのパラメータを「const」として宣言することもできます。

remove メソッドの場合

void RemoveLVA(const LVA& lva)
{
    std::vector<LVA>::iterator position =
    std::find(lvas.begin(), lvas.end(), lva);
    if (position != lvas.end())
    {
        lvas.erase(position);
    }
}

ただし、LVA クラスには == 演算子が必要です。

幸運を。

于 2013-07-10T16:58:50.697 に答える