假设:
有这么一个字符串集合,"1","2","3",........."10000000", "40","20".
要求进行排序。
基本想法: 把字符串转化为数字,进行对比。
但是有一个问题:也许这个字符串的长度超过了 普通整数的范围了,怎么办? 有人说用 long long ,可以,但不优雅,而且无法对更加大的数字进行排序。
解决方法: 使用大数的思想。代码如下;
#include <iostream>
#include <functional>
#include <map>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
#include <utility>
#include <cassert>
using namespace std;
struct string_Intnumber_checker{
bool operator()(const string& str) const{
if(!str.empty())
{
if(string::npos == str.find_first_not_of("0123456789"))
{
return true;
}
}