王朝百科
分享
 
 
 

lexicographical_compare

王朝百科·作者佚名  2010-05-23  
宽屏版  字体: |||超大  

lexicographical_compare:

C++ STL 泛型算法函数:用于按字典序比较两个序列。

函数申明:

//重载1,如果[first1, last1)按字典序列小于[first2, last2),返回true,否则返回false。

template <class InputIterator1, class InputIterator2 >

bool

lexicographical_compare(

InputIterator1 first1, InputIterator1 last1,

InputIterator2 first2, InputIterator2 last2 );

//重载2,功能同重载1,增加了比较函数comp,即大小关系由comp函数确定。

template < class InputIterator1, class InputIterator2,

class Compare >

bool

lexicographical_compare(

InputIterator1 first1, InputIterator1 last1,

InputIterator2 first2, InputIterator2 last2,

Compare comp );

示例代码:

#include <algorithm>

#include <iostream>

#include <iterator>

using namespace std;

void Output(const int * a,const int & a_size,const int * b,const int & b_size)

{

cout<<"a[]=";

copy(a,a+a_size,ostream_iterator<int>(cout," "));

cout<<endl;

cout<<"b[]=";

copy(b,b+b_size,ostream_iterator<int>(cout," "));

cout<<endl;

}

typedef bool (* CMP)(const int &,const int &);

int Compare(const int * a,const int & a_size,const int * b,const int & b_size,CMP cmp) //按照cmp方式进行比较

{

bool ASmallerThanB,BSmallerThanA;

ASmallerThanB=lexicographical_compare(a,a+a_size,b,b+b_size,cmp); //按照cmp方式进行比较

BSmallerThanA=lexicographical_compare(b,b+b_size,a,a+a_size,cmp);

if(! ASmallerThanB && ! BSmallerThanA) //a[] 和 b[] 相等

return 0;

else if(ASmallerThanB) //a[] < b[]

return -1;

else

return 1;

}

int Compare(const int * a,const int & a_size,const int * b,const int & b_size) //默认比较方式

{

bool ASmallerThanB,BSmallerThanA;

ASmallerThanB=lexicographical_compare(a,a+a_size,b,b+b_size); //默认比较方式

BSmallerThanA=lexicographical_compare(b,b+b_size,a,a+a_size);

if(! ASmallerThanB && ! BSmallerThanA) //a[] 和 b[] 相等

return 0;

else if(ASmallerThanB) //a[] < b[]

return -1;

else

return 1;

}

bool greater(const int & a,const int & b) //自定义越大的字典序越小

{

return a>b;

}

int main()

{

int a[]={1,2,3,4,5,6};

int b[]={1,2,3,4,5,6};

Output(a,6,b,6);

cout<<"Compare(a,6,b,6)="<<Compare(a,6,b,6)<<endl;

cout<<"Compare(a,6,b,6,greater)="<<Compare(a,6,b,6,greater)<<endl;

rotate(a+2,a+4,a+6);

Output(a,6,b,6);

cout<<"Compare(a,6,b,6)="<<Compare(a,6,b,6)<<endl;

cout<<"Compare(a,6,b,6,greater)="<<Compare(a,6,b,6,greater)<<endl;

return 0;

}

return a>b;

}

int main()

{

int a[]={1,2,3,4,5,6};

int b[]={1,2,3,4,5,6};

Output(a,6,b,6);

cout<<"Compare(a,6,b,6)="<<Compare(a,6,b,6)<<endl;

cout<<"Compare(a,6,b,6,greater)="<<Compare(a,6,b,6,greater)<<endl;

rotate(a+2,a+4,a+6);

Output(a,6,b,6);

cout<<"Compare(a,6,b,6)="<<Compare(a,6,b,6)<<endl;

cout<<"Compare(a,6,b,6,greater)="<<Compare(a,6,b,6,greater)<<endl;

return 0;

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有