C++判断两个vector是否相等

本文详细介绍了如何通过C++的vector模板类的重载操作符==判断两个vector是否相等,涉及内置类型和自定义类型的处理,并展示了std::equal函数的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断两个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==函数,也就是重载等于判断.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值