函数原型:ios
default (1) | template <class InputIterator1, class InputIterator2> bool lexicographical_compare (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); |
---|---|
custom (2) | template <class InputIterator1, class InputIterator2, class Compare> bool lexicographical_compare (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp); |
按照词典序比较前者是否小于后者。函数
当序列<first1, last1>按照字典序比较小于后者序列<first2, last2>,则返回true。不然,返回false。性能
所谓字典序比较,指的是两个序列分别从第一个开始一一按照字典序进行比较,若是相同位置的元素相同,则继续向后比较,直到相同位置出现不一样的元素为止。spa
示例:code
// lexicographical_compare example #include <iostream> // std::cout, std::boolalpha #include <algorithm> // std::lexicographical_compare #include <cctype> // std::tolower // a case-insensitive comparison function: bool mycomp (char c1, char c2) { return std::tolower(c1)<std::tolower(c2); } int main () { char foo[]="Apple"; char bar[]="apartment"; std::cout << std::boolalpha; std::cout << "Comparing foo and bar lexicographically (foo<bar):\n"; std::cout << "Using default comparison (operator<): "; std::cout << std::lexicographical_compare(foo,foo+5,bar,bar+9); std::cout << '\n'; std::cout << "Using mycomp as comparison object: "; std::cout << std::lexicographical_compare(foo,foo+5,bar,bar+9,mycomp); std::cout << '\n'; return 0; }默认比较函数,使用 ASCII 进行比较,例如本例中'A'为65, 'a'为97,所以'a'>'A'。
自定义的比较函数mycomp中,将全部的字符转换成为小写,因此第一个未匹配的字符是第三个的'p'和'a'。orm
输出:ci
Comparing foo and bar lexicographically (foo<bar): Using default comparison (operator<): true Using mycomp as comparison object: false
性能分析:原型
最多比较次数为: 2*min(count1,count2)
it
版权声明:本文为博主原创文章,未经博主容许不得转载。io