STL算法库提供了3个比较算法:equal()、mismatch()和lexicographical_compare()。
equal()算法可以实现两个容器对象的比较,若两个对象相等,返回值true。该算法只能比较属于同一类型的不同变量。如果需要判断两个对象是否相等,要使用equal()算法。若没有找到相异点,返回值是一个pair,以第一个对象的end元素和第二个对象的对应元素组成;若找到相异点,则以该相异点的对应元素组成一个pair,并被equal()算法返回。
mismatch()算法用于寻找两个容器对象之间两两相异的对应元素,若没有找到相异点,也并不意味着这两个对象完全相同,因为这两个对象的容量还可能不相同。
lexicographical_compare()算法属于字典式比较。所谓字典式比较是指一一比较,两个容器中的元素,直到发生以下情况:①若两个元素不相等,则两个元素的比较结果即两个序列的比较结果;②若两个容器中的元素数量不相等,则元素较少的序列小于另一个序列,即若第一序列元素数量较少,则比较结果为true;③如果两序列均没有更多的元素以供比较,则两序列相等,比较结果为false。
上述3种算法的原型分别为:
下面以例4-12~例4-14对上述3种算法的使用方法进行说明。
例4-12
例4-12的执行效果如图4-12所示。
图4-12 例4-12的执行效果
例4-13用于说明mismatch()算法的使用方法。
例4-13(www.xing528.com)
例4-13执行效果如图4-13所示。
图4-13 例4-13的执行效果
例4-14用于说明lexicograpghical_compare()算法的使用方法。
例4-14
例4-14的执行效果如图4-14所示。
图4-14 例4-14的执行效果
提示
以上三种算法除其各自的一般形式外,均提供了自定义比较规则。使用自定义比较规则时,其实现的功能已经超越了其名称的意义。equal()和lexicographical_compare()算法的返回值均为bool类型,而mismatch()算法的返回值为pair类型。读者应理解这三种算法的意义。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。