比较两个序列字典序(lexicographicallySmaller)

Posted on 2014-08-31 11:44  LLGemini  阅读(426)  评论(0编辑  收藏  举报

 

 1 bool lexicographicalSmaller(vector<int> a, vector<int> b)
 2 {
 3     int n = a.size();
 4     int m = b.size();
 5     for(int i = 0; i < n && i < m; i++)
 6     {
 7         if(a[i] < b[i]) return true;
 8         else if(b[i] < a[i])    return false;
 9         return i == n && i < m;
10     }
11 }

模板化(应用于定义了“小于”运算符的任意数据类型)

 1 template<class T>
 2 bool lexicographicalSmaller(vector<T> a, vector<T> b)
 3 {
 4     int n = a.size();
 5     int m = b.size();
 6     for(int i = 0; i < n && i < m; i++)
 7     {
 8         if(a[i] < b[i]) return true;
 9         else if(b[i] < a[i])    return false;
10         return i == n && i < m;
11     }
12 }
View Code

有了模板函数,不管定义的是vector<int>a, b, vector<string>a, b, vector<vector<int> >a, b,全都可以用if(lexicographicalSmaller(a, b))...的方式直接使用上述函数。