假设我们有这样的需求,那就是判断两个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==
函数,也就是重载等于判断.