假如有N个资源(范围是0~N-1)可以重复利用,如何来管理这N个资源池?
初始化
用一个vector或数组来初始保存可用资源。
用一个set保存已经用了的资源。
用head、tail指示用的情况。
申请
申请一个,将head后移,将资源的id添加到useable set中,同时将vector中该位置置为invalid。
以下为连续申请4个后情况。
释放
释放需要明确指出释放哪一个资源。
释放一个资源,将tail指向的位置填充释放的id,tail后移。将id从set中移除。
以下是先后释放3、2后的情况。
以上只为大概思路,边界及合理检查细节没有描述。如果释放的资源确定就是申请的资源,那么used set也可以不用创建。