原创:fhq_treap实现的map
查看原帖
原创:fhq_treap实现的map
1210321
zhangzhixu000001楼主2024/5/19 08:50

前言

众所周知,map是用rbt写的。
rbt相对来说效率较高,但,编码也难。
那么,有没有什么编码轻松、效率也高的方法呢?
本人想到了一种平衡树:treap。
treap每次操作前都需要附一个优先级,如果我们把传入的下标处理为优先级,那么,不就可以维护了吗?
于是,本蒟蒻开始了尝试。

优先级(下标)处理

对于c++的stl容器中,最难处理的就是字符串了。
字符串特性丰富,灵活多变。考虑维护他最后10位的ascll码与他的位数之和。
这样,就可以存储绝字符串优先级了。
判重的方式也简单:先比较优先级,再暴力判重,如果发现误判,将这个字符串加上一个随机值,存储下来。

然后,代码时间!(仅给出下标转换法,其他treap 操作省略)

int do_intt(string str)
{
  int sum=0,len;
  len=str.length();//取位数
  if (len<=10)//不够十位或刚好十位
  {
    for (int i=0;i<len;i++) sum+=str[i];
  }
 else
   {
     for (int i=len-11;i<len;i++) sum+=str[i]
   }
   sum+=len;
}
2024/5/19 08:50
加载中...