vector<int> alls;//存储所有待离散化的数据
sort(alls.begin(),alls.end());//将所有值排序
alls.erase(unique(alls.begin(),alls.end()),alls.end());//去掉重复元素
//二分求出x对应的离散化的值
int find(x)
{
int l = 0,r = alls.size()-1;
while(l<r)
{
int mid = l+r>>1;
if(alls[mid]>=x) r=mid;
else l=mid+1;
}
return l;//映射到0,1,2,3,...
//return l+1; 映射到1,2,3,...
}
原文:https://www.cnblogs.com/codertea/p/13370989.html