blob: 7c0f058217cf31f93094c5a4b85d9304a8e1e354 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#ifndef __LIBJIN_COMMON_ARRAY_H
#define __LIBJIN_COMMON_ARRAY_H
namespace jin
{
/* ԶͷŶڴջϴĶ̬ */
template<typename T>
class Array
{
public:
Array() : length(0), data(nullptr) {}
Array(int l)
{
length = l;
data = new T[l];
}
~Array()
{
delete[] data;
length = 0;
}
T* operator &()
{
return data;
}
T operator[](int index)
{
return data[index];
}
/* ڴ */
void bind(T* d, int len)
{
if (data != nullptr)
delete data;
data = d;
length = len;
}
void add(T v)
{
int len = length + 1;
T* d = new T[len];
memcpy(d, data, size());
d[length] = v;
bind(d, len);
}
int size()
{
return sizeof(T) * length;
}
int count()
{
return length;
}
private:
/**
* http://blog.jobbole.com/106923/
* new ڴ洴
* 1. new ڴ
* 2. ù캯
*
* new, deleteڷͷڴ棬
*/
void* operator new(size_t t);
void operator delete(void* ptr);
T * data;
unsigned int length;
};
}
#endif
|