首页 理论教育 equal算法实现容器对象的比较及自定义比较规则

equal算法实现容器对象的比较及自定义比较规则

时间:2023-10-25 理论教育 版权反馈
【摘要】:equal()算法可以实现两个容器对象的比较,若两个对象相等,返回值true。该算法只能比较属于同一类型的不同变量。上述3种算法的原型分别为:下面以例4-12~例4-14对上述3种算法的使用方法进行说明。图4-14 例4-14的执行效果提示以上三种算法除其各自的一般形式外,均提供了自定义比较规则。使用自定义比较规则时,其实现的功能已经超越了其名称的意义。

equal算法实现容器对象的比较及自定义比较规则

STL算法库提供了3个比较算法:equal()、mismatch()和lexicographical_compare()。

equal()算法可以实现两个容器对象的比较,若两个对象相等,返回值true。该算法只能比较属于同一类型的不同变量。如果需要判断两个对象是否相等,要使用equal()算法。若没有找到相异点,返回值是一个pair,以第一个对象的end元素和第二个对象的对应元素组成;若找到相异点,则以该相异点的对应元素组成一个pair,并被equal()算法返回。

mismatch()算法用于寻找两个容器对象之间两两相异的对应元素,若没有找到相异点,也并不意味着这两个对象完全相同,因为这两个对象的容量还可能不相同。

lexicographical_compare()算法属于字典式比较。所谓字典式比较是指一一比较,两个容器中的元素,直到发生以下情况:①若两个元素不相等,则两个元素的比较结果即两个序列的比较结果;②若两个容器中的元素数量不相等,则元素较少的序列小于另一个序列,即若第一序列元素数量较少,则比较结果为true;③如果两序列均没有更多的元素以供比较,则两序列相等,比较结果为false。

上述3种算法的原型分别为:

978-7-111-51399-5-Chapter04-45.jpg

下面以例4-12~例4-14对上述3种算法的使用方法进行说明。

例4-12

978-7-111-51399-5-Chapter04-46.jpg

978-7-111-51399-5-Chapter04-47.jpg

例4-12的执行效果如图4-12所示。

978-7-111-51399-5-Chapter04-48.jpg

图4-12 例4-12的执行效果

例4-13用于说明mismatch()算法的使用方法。

例4-13(www.xing528.com)

978-7-111-51399-5-Chapter04-49.jpg

978-7-111-51399-5-Chapter04-50.jpg

例4-13执行效果如图4-13所示。

978-7-111-51399-5-Chapter04-51.jpg

图4-13 例4-13的执行效果

例4-14用于说明lexicograpghical_compare()算法的使用方法。

例4-14

978-7-111-51399-5-Chapter04-52.jpg

978-7-111-51399-5-Chapter04-53.jpg

例4-14的执行效果如图4-14所示。

978-7-111-51399-5-Chapter04-54.jpg

图4-14 例4-14的执行效果

提示

以上三种算法除其各自的一般形式外,均提供了自定义比较规则。使用自定义比较规则时,其实现的功能已经超越了其名称的意义。equal()和lexicographical_compare()算法的返回值均为bool类型,而mismatch()算法的返回值为pair类型。读者应理解这三种算法的意义。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈