CPP常识 06 -- 判断两个vector是否相等

假设我们有这样的需求,那就是判断两个vector--v1, v2是否相等,那么我们应该怎样做呢?不急,我们先来追踪一下vector的源码.

vector已经实现了operator==这个函数,也就是说它已经重载了==这个操作.

template<class _Ty,
    class _Alloc> inline
    bool operator==(const vector<_Ty, _Alloc>& _Left,
        const vector<_Ty, _Alloc>& _Right)
    {   // test for vector equality
    return (_Left.size() == _Right.size()
        && _STD equal(_Left.begin(), _Left.end(), _Right.begin()));
    }

我们可以看得到,首先是判断两个vector的大小是否相等,然后调用std的equal函数来进行判断.

equal函数的实现大概是这个样子的:

...
for ( ; first1 != last1; ++first1, ++first2)
  if (*first1 != *first2)
     return false;
return true;
...

代码很简单,上面的first1以及last1都是第一个vector的起始和终止迭代器,first2是第二个vector的起始迭代器.代码不过是比较两个vector相同位置上的值而已.

所以,如果vector是内置类型的数据,如int, char等,直接用v1 == v2来判断就可以了,但是如果你用了自定义类型的话,那么首先,你要实现该类型的operator==函数,也就是重载等于判断.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容