lexicographical_compare函数是用来比较两个容器的大小,包括元素和个数,他的原则是这样的:
1、一次比较两个容器中的元素,若遇到第一个不同的元素,则根据元素的大小决定容器的大小
2、当两个容器元素都相同,个数不同时,若第一个容器个数小于第二个容器的元素个数,则第一个容器小于第二个容器
3、元素个数与元素都相等时,两个容器相等,函数返回false
只有当第一个容器小于第二个容器时,lexicographical_compare函数才会返回true。
lexicographical_compare也有两种形式:
第一种:
template<class _InIt1,
class _InIt2> inline
bool lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,
_InIt2 _First2, _InIt2 _Last2)
第二种:
template<class _InIt1,
class _InIt2,
class _Pr> inline
bool _Lexicographical_compare(_InIt1 _First1, _InIt1 _Last1,
_InIt2 _First2, _InIt2 _Last2, _Pr _Pred)
程序实例:
#include<iostream>
#include<vector>
#include<list>
#include<algorithm>
using namespace std;
void print(int ele) {
cout << ele << " ";
}
int main() {
vector<int> vec;
list<int>l;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
vec.push_back(5);
l.push_back(1);
l.push_back(2);
l.push_back(3);
l.push_back(5);
l.push_back(4);
bool flag = lexicographical_compare(vec.begin(), vec.end(), l.begin(), l.end());
if (flag)
cout << "vec < l" << endl;
else
cout << "vec >= l" << endl;
return 0;
}
输出结果: