如何解决如何检查两个不同类型的向量是否相等
我分别具有结构a
和b
的两个向量abc
,abc2
:
struct abc {
const int &data;
abc(const int& cdata) : data(cdata) {}
};
struct abc2 {
const int& data;
abc2(const int& cdata) : data(cdata) {}
bool operator== (const abc& c1) const {
return (c1.data == data);
}
};
int main() {
std::vector<abc> a{abc(2),abc(2)};
std::vector<abc2> b{abc2(2),abc2(2)};
}
我想看看a
和b
是否相等。
但是,当我尝试以下操作时:
assert(a == b);
错误C2678二进制'==':未找到采用类型为'std :: vector
>'的左侧操作数的运算符(或没有可接受的转换) 与 [ _Ty = abc ]
如何为这两个不同类型的向量实现自定义相等性检查?我不需要做abc
== abc2
,因此abc
结构不需要重载等于运算符。
解决方法
有一个用于比较相等性的标准算法:std::equal
。在这种情况下
assert(std::equal(b.begin(),b.end(),a.begin(),a.end()));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。