struct CompareNoCase
{
bool operator()(const string &str1, const string &str2)
{
string str3; //全部变成小写
str3.resize(str1.size());
transform(str1.begin(), str1.end(), str3.begin(), tolower); //tolower是预定义函数对象
string str4;
str4.resize(str2.size());
transform(str2.begin(), str2.end(), str4.begin(), tolower); //tolower是预定义函数对象
return (str3 < str4); //从小到大排序
}
};
void main06()
{
set<string> set1;
set1.insert("aaa");
set1.insert("bbb");
set1.insert("ccc");
set<string>::iterator it = set1.find("aAa");//find函数默认情况下是区分大小写的
if (it == set1.end())
{
cout << "没有查找到 aaa" << endl;
}
else
{
cout << "查找到aaa" << endl;
}
//使用二元谓词实现不区分大小写
set<string, CompareNoCase> set2;
set2.insert("bbb");
set2.insert("aaa");
set2.insert("ccc");
set<string, CompareNoCase>::iterator it2 = set2.find("aAa");
if (it2 == set2.end())
{
cout << "没有查找到 aAa" << endl;
}
else
{
cout << "不区分大小写的查找到aAa" << endl;
}
}
void main()
{
//main01();
//main02();
//main03();//一元函数和一元谓词
//main04();//二元函数和二元谓词
//main05();
main06();//二元谓词在set集合中的应用
system("pause");
}
第十二天之二元谓词在集合中的应用
最新推荐文章于 2021-02-14 20:32:24 发布