【发布时间】:2013-08-21 14:58:47
【问题描述】:
我正在尝试使用以下比较函数对 vector<string> 进行排序,其中每个字符串都是一个数字(可能是高达 10^100 的大数字)。但是我在 VS2010 中遇到了调试断言失败错误。
bool compareNumberStrings (const string &a, const string &b)
{
if (a.length () < b.length ())
return true;
if (a.length () == b.length ())
{
int i;
for (i=0; i<a.length() && a[i] == b[i]; i++);
if (i != a.length ())
return a[i] < b[i];
else
return true;
}
return false;
}
【问题讨论】:
-
为什么不使用
stringstream将字符串转换为数字,然后对这些数字进行直接比较? -
看看cplusplus.com/reference/algorithm/sort 并实现你自己的比较器。
-
愿意分享哪个断言触发了吗?
-
@PlatinumAzure 字符串表示的数字可以是10^100,还能用吗?
-
你考虑过任意精度数库吗?