私は、以下のC++クラスを持っているC++でオブジェクトのベクトルから1つのアイテムを削除するにはどうすればよいですか?
class rec
{
public:
int width;
int height;
};
そして、私の主な機能には、私はrec
オブジェクトのベクトルを持っている、
rec r1,r2,r3;
r1.height = r1.width = 1;
r2.height = r2.width = 2;
r3.height = r3.width = 3;
vector<rec> rvec = { r1,r2,r3 };
は今、私は次のメソッド呼び出しでrvec
から一つの項目を消去したいです
rvec.erase(remove(rvec.begin(), rvec.end(), r_remove), rvec.end());
は、しかし、私はこのエラーを得ました
C2678: binary '==': no operator found which takes a left-hand operand of type 'rec' (or there is no acceptable conversion)
recオブジェクト間の比較を可能にする。これは、removeがr_removeと一致するエントリを見つけるために使用するものです。 –
あなたのクラスに 'operator =='を実装できない場合は、['std :: remove_if'](http://en.cppreference.com/w/cpp/algorithm/remove)を試すこともできます。 – StoryTeller
For将来の参照では、すべてのアルゴリズムが受け入れるタイプの要件のセットとして注意する必要があります。ドキュメントを読み、その要件が何であるかを学びます。 [cppreference](http://en.cppreference.com/w/cpp/algorithm)はブックマークに適した場所です。 – StoryTeller