如何从c ++中的对象向量中删除一个项目?

时间:2016-11-23 11:29:46

标签: c++ vector erase

我有以下C ++类,

class rec
{
public:
    int width;
    int height;
};

在我的main函数中,我有一个带有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'==':找不到带左手操作数的运算符   类型'rec'(或没有可接受的转换)

1 个答案:

答案 0 :(得分:5)

您需要为自定义数据结构rec

重载operator ==
class rec
{
public:
    int width;
    int height;
    bool operator==(const rec&  rhs) {
        return (width == rhs.width) && (height == rhs.height);
    }
};

因为remove通过operator ==

比较值