支持先进先出,快速删除某一元素,查找某元素序号的数据结构

时间:2022-03-12 10:30:18
想做游戏服务器的排队系统,需用一个数据结构存储当前排队的文件描述符fd,先排队的先被提取,后加入的放到队尾,根据某fd值快速查到他在队列中的排号,也就是要知道他前面还有多少人,并且如果fd断开,需将次fd从排队中删除,也就是支持删除任意位置的元素。请问数据结构该如何定义,队列肯定是不可以。

6 个解决方案

#1


vector?

#2


引用 1 楼 kobehahaha 的回复:
vector?
 vector删除效率很低  如果删除第一个,后面所有的都要动

#3


那么用list存储数据结构,再用hashmap或map查找fd获得list节点怎样? 支持先进先出,快速删除某一元素,查找某元素序号的数据结构

#4


引用 3 楼 donjin9 的回复:
那么用list存储数据结构,再用hashmap或map查找fd获得list节点怎样? 支持先进先出,快速删除某一元素,查找某元素序号的数据结构
没太看懂,能具体一点吗?感谢

#5


fd是相当于一个id吧?
那list就用来插入删除每个用户的数据。排号就不好办了,不能直接算出来。 支持先进先出,快速删除某一元素,查找某元素序号的数据结构
hashmap就用来加快查询,fd为key,对应的list节点地址为value。

#6


up  有没有大神回复啊

#1


vector?

#2


引用 1 楼 kobehahaha 的回复:
vector?
 vector删除效率很低  如果删除第一个,后面所有的都要动

#3


那么用list存储数据结构,再用hashmap或map查找fd获得list节点怎样? 支持先进先出,快速删除某一元素,查找某元素序号的数据结构

#4


引用 3 楼 donjin9 的回复:
那么用list存储数据结构,再用hashmap或map查找fd获得list节点怎样? 支持先进先出,快速删除某一元素,查找某元素序号的数据结构
没太看懂,能具体一点吗?感谢

#5


fd是相当于一个id吧?
那list就用来插入删除每个用户的数据。排号就不好办了,不能直接算出来。 支持先进先出,快速删除某一元素,查找某元素序号的数据结构
hashmap就用来加快查询,fd为key,对应的list节点地址为value。

#6


up  有没有大神回复啊