#include <algorithm>
#include <functional>
#include <string>
#include <vector>
#include "PrintSequence.h"
using namespace std;
int main()
{
string s1("This is a test");
string s2("This is a Test");
cout << "s1 = " << s1 << endl;
cout << "s2 = " << s2 << endl;
cout << "compare s1 & s1: "
<< equal(s1.begin(), s1.end(), s1.begin()) << endl;//两个元素完全相同返回真
cout << "compare s1 & s2: "
<< equal(s1.begin(), s1.end(), s2.begin()) << endl;;
cout << "lexicographical_compare s1 & s1: "
<< lexicographical_compare(s1.begin(), s1.end(), //第一个范围“字典编纂”顺序小于第二个范围则返回真
s1.begin(), s1.end()) << endl; //如果执行到一个范围的结尾还没有找到不匹配的元素对,
cout << "lexicographical_compare s1 & s2: " //这时短的范围领先,即小
<< lexicographical_compare(s1.begin(), s1.end(),
s2.begin(), s2.end()) << endl;
cout << "lexicographical_compare s2 & s1: "
<< lexicographical_compare(s2.begin(), s2.end(),
s1.begin(), s1.end()) << endl;
cout << "lexicographical_compare shortened "
"s1 & full-length s2: " << endl;
string s3(s1);
while(s3.length() != 0)
{
bool result = lexicographical_compare(
s3.begin(), s3.end(), s2.begin(), s2.end());
cout << s3 << endl << s2 << ", result = " << result << endl;
if(result == true)
break;
s3 = s3.substr(0, s3.length() - 1);
}
pair<string::iterator, string::iterator> p =
mismatch(s1.begin(), s1.end(), s2.begin()); //p.first是第一个范围出现不匹配元素的位置
print(p.first, s1.end(), "p.first", ""); //p.second是第二个范围出现不匹配元素的位置
print(p.second, s2.end(), "p.second", "");
system("pause");
return 0;
}
/*
结果:
s1 = This is a test
s2 = This is a Test
compare s1 & s1: 1
compare s1 & s2: 0
lexicographical_compare s1 & s1: 0
lexicographical_compare s1 & s2: 0
lexicographical_compare s2 & s1: 1
lexicographical_compare shortened s1 & full-length s2:
This is a test
This is a Test, result = 0
This is a tes
This is a Test, result = 0
This is a te
This is a Test, result = 0
This is a t
This is a Test, result = 0
This is a
This is a Test, result = 1
p.first: test
p.second: Test
*/
STL比较范围(equal, lexicographical_compare, mismatch)
最新推荐文章于 2023-08-22 08:00:00 发布