排行榜是很多软件的功能需求,比如我们常玩的各类游戏,视频直播,微博等等都有排行榜。现在的排行榜实现方式大都有这两种:1.定时排名,2实时排名,下面就让我来介绍我对实时排行榜的理解。
实时排行有两个问题:
1. 如果数据量很大怎么做到实时排名?
2. 如果要实时调整排名数据怎么做到快速调整?
对于数据量小的程序可以在单个机器上完成就ok了,其实主要的实现方法还是数组移动和排名的映射。
首先声明一个vector数组,用来保存排名数据,数组下标就是名次(当然同样的排名值可以特殊的显示处理)。其次声明一个map或hashmap(hashmap性能会高些)用来存储一个id对应的名次。实现的代码如下:
struct RankData
{
int id;
int value;
RankData() :id(0), value(0){};
};
class RankMgr
{