MCPcopy Create free account
hub / github.com/catboost/catboost / TArray2D

Class TArray2D

library/cpp/containers/2d_array/2d_array.h:24–109  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22
23template <class T>
24class TArray2D {
25private:
26 typedef T* PT;
27 T* Data;
28 T** PData;
29 size_t XSize;
30 size_t YSize;
31
32private:
33 void Copy(const TArray2D& a) {
34 XSize = a.XSize;
35 YSize = a.YSize;
36 Create();
37 for (size_t i = 0; i < XSize * YSize; i++)
38 Data[i] = a.Data[i];
39 }
40 void Destroy() {
41 delete[] Data;
42 delete[] PData;
43 }
44 void Create() {
45 Data = new T[XSize * YSize];
46 PData = new PT[YSize];
47 for (size_t i = 0; i < YSize; i++)
48 PData[i] = Data + i * XSize;
49 }
50
51public:
52 TArray2D(size_t xsize = 1, size_t ysize = 1) {
53 XSize = xsize;
54 YSize = ysize;
55 Create();
56 }
57 TArray2D(const TArray2D& a) {
58 Copy(a);
59 }
60 TArray2D& operator=(const TArray2D& a) {
61 Destroy();
62 Copy(a);
63 return *this;
64 }
65 ~TArray2D() {
66 Destroy();
67 }
68 void SetSizes(size_t xsize, size_t ysize) {
69 if (XSize == xsize && YSize == ysize)
70 return;
71 Destroy();
72 XSize = xsize;
73 YSize = ysize;
74 Create();
75 }
76 void Clear() {
77 SetSizes(1, 1);
78 }
79#ifdef _DEBUG
80 TBoundCheck<T> operator[](size_t i) const {
81 Y_ASSERT(i < YSize);

Callers

nothing calls this directly

Calls 2

DestroyFunction · 0.50
CopyFunction · 0.50

Tested by

no test coverage detected