dl
dl_vector_reuse.h
浏览该文件的文档.
1
12#pragma once
13
14#include <vector>
15#include <cassert>
16
17namespace dl
18{
20 template<typename T>
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
57 _i{ 0 }
58 {
59 }
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}
void Add(const T &b)