dl
dl
base
dl_vector_free.h
浏览该文件的文档.
1
10
11
#pragma once
12
#include <vector>
13
#include <stack>
14
15
namespace
dl
16
{
17
template
<
typename
T>
18
class
VectorFree
19
{
20
public
:
21
// 申请一个空闲元素(O(1))
22
size_t
GetFree
()
23
{
24
// 1. 优先用空闲列表
25
if
(!_freeIndex.empty())
26
{
27
size_t
idx = _freeIndex.top();
28
_freeIndex.pop();
29
return
idx;
30
}
31
32
// 2. 无空闲 → 扩容(最多触发一次)
33
_data.emplace_back();
34
return
_data.size() - 1;
35
}
36
37
// 释放元素(O(1))
38
void
Release
(
size_t
index)
39
{
40
if
(index < _data.size())
41
{
42
_freeIndex.push(index);
43
}
44
}
45
46
// 访问元素
47
T
&
operator[]
(
size_t
index)
48
{
49
return
_data[index];
50
}
51
52
// 获取全部数据
53
std::vector<T>&
data
()
54
{
55
return
_data;
56
}
57
58
private
:
59
std::vector<T> _data;
// 真实资源
60
std::stack<size_t> _freeIndex;
// 空闲索引栈
61
};
62
63
64
}
dl::VectorFree
定义
dl_vector_free.h:19
dl::VectorFree::Release
void Release(size_t index)
定义
dl_vector_free.h:38
dl::VectorFree::data
std::vector< T > & data()
定义
dl_vector_free.h:53
dl::VectorFree::GetFree
size_t GetFree()
定义
dl_vector_free.h:22
dl::VectorFree::operator[]
T & operator[](size_t index)
定义
dl_vector_free.h:47
dl
定义
dl_array.h:22
dl::KeyCode::T
@ T
定义
dl_input.h:121
制作者
1.13.1