如何实现一个高效率的容器算法?
按如下要求实现一个容器:
1.遍历和查找操作优先,情景:(1)循环遍历容器中元素;(2)根据传递的ID号查找元素
2.循环遍历时,需要很够快速地跳到容器中指定的位置开始顺序遍历(因此list之类的方式不可行);
3.根据ID号查找时,要能够识别不同实例重用ID号的情形或者避免不同实例号重用同一个ID(例如前一个实例消亡了,但client保留了这个实例的ID号,然后用这个实例号到容器中来进行操作,但这时容器中另一个元素也使用了这个ID号,要保证不会发生这种情况);
4.插入和删除的优先级低,若有必要可以牺牲这两个操作的性能
5.容器大小大致为两个数量级,几十数量级,和几千数量级,容器大小可在编译时预先确定。
6.可以对容器元素有要求,比如从指定接口派生或包含指定成员函数(用于模板实现)
7.不需要兼顾容器中只存少数元素和容器基本存满时的需求,只需考虑容器基本满时的效率,因为容器元素少时压力本来就小,所以测试可以主要针对容器基本放满的情形来进行。
请大家给点思路 谢谢
不用STL 和 boost里现成的!
[解决办法]
stl的map可以满足你的需求啊
你也可以参考这里实现的一个map:http://blog.csdn.net/zilaishuichina/article/details/8554258,以及对应的对象池
至于你说的第3点,在你的要放入容器的obj里面,除了记录id外,再记录一个reuseid就可以了,每次从容器里拿一个结点出来的时候reuseid+1,这样你只要判断reuseid是不是之前的值,就可以知道这个对象是不是已经被别的逻辑重用了