dl
dl
base
dl_vector_reuse.h
浏览该文件的文档.
1
12
#pragma once
13
14
#include <vector>
15
#include <cassert>
16
17
namespace
dl
18
{
20
template
<
typename
T>
21
class
VectorReuse
22
{
23
public
:
24
void
Reset
()
25
{
26
_i = 0;
27
}
28
T
*
Find
(
const
T
& b)
29
{
30
for
(
size_t
i = 0; i < _i; ++i)
31
{
32
if
(*_data[i] == b)
33
return
_data[i];
34
}
35
return
nullptr
;
36
}
37
void
Add
(
const
T
& b)
38
{
39
if
(_i >= _data.size())
40
{
41
_data.push_back(
new
T
(b));
42
++_i;
43
}
44
else
45
*_data[_i++] = b;
46
}
47
auto
begin
()
48
{
49
return
_data.data();
50
}
51
auto
end
()
52
{
53
return
_data.data() + _i;
54
}
55
56
VectorReuse
() :
57
_i{ 0 }
58
{
59
}
60
~VectorReuse
()
61
{
62
for
(
auto
& iter : _data)
63
{
64
if
(iter ==
nullptr
)
65
break
;
66
delete
iter;
67
}
68
}
69
private
:
70
std::vector<T*> _data;
71
size_t
_i;
// 下一次位置
72
};
73
74
75
}
dl::VectorReuse::VectorReuse
VectorReuse()
定义
dl_vector_reuse.h:56
dl::VectorReuse::Find
T * Find(const T &b)
定义
dl_vector_reuse.h:28
dl::VectorReuse::Reset
void Reset()
定义
dl_vector_reuse.h:24
dl::VectorReuse::end
auto end()
定义
dl_vector_reuse.h:51
dl::VectorReuse::Add
void Add(const T &b)
定义
dl_vector_reuse.h:37
dl::VectorReuse::begin
auto begin()
定义
dl_vector_reuse.h:47
dl::VectorReuse::~VectorReuse
~VectorReuse()
定义
dl_vector_reuse.h:60
dl
定义
dl_array.h:22
dl::KeyCode::T
@ T
定义
dl_input.h:121
制作者
1.13.1