static bool cmp(string &a,string &b)
{
if(a.size()==b.size())
{
return a<b;
}
return a.size()<b.size();
}
这是一个自定义比较器,用于比较由大数字组成的两个字符串,如"0";3922〃;以及";12929〃;,并将它们进行比较,看看哪个更大。但是,我不明白为什么当a.size() == b.size()
返回a < b
?
在if语句中,比较的是字符串,而不是整数。因此,如果要比较整数,请先对其进行转换。
标准库中的常见算法,如std::lower_bound
和std::sort
,只使用一个比较函数来提供a < b
的结果,这足以进行所有其他比较(例如,如果他们需要测试相等性,他们可以进行!(a < b || b < a)
)。
如果这个自定义函数没有检查字符串的长度;1000〃;将在";50〃;按照字典顺序,这就是std::string
的operator<(...)
所使用的(以及当它们的长度相等时在该函数中使用的)。