-
Notifications
You must be signed in to change notification settings - Fork 0
/
table.h
74 lines (71 loc) · 1.69 KB
/
table.h
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
#pragma once
#include "record.h"
template<class type> class table
{
private: record<type> * mem;
private: int size;//ðàçìåð
private: int count;//ñêîëüêî çàïîëíåíî
public:
table(int _size = 0) {
size = _size;
count = 0;
mem = new record<type>[size];
};
table(table<type> & tmp) {
size = tmp.size;
count = tmp.count;
mem = new record<type>[size];
for (size_t i = 0; i < count; i++)
mem[i] = tmp.mem[i];
};
table<type> & operator=(table<type> & tmp) {
if (size < tmp.size) {
delete[] mem;
size = tmp.size;
count = tmp.count;
mem = new record<type>[size];
}
for (size_t i = 0; i < tmp.count; i++)
mem[i] = tmp.mem[i];
count = tmp.count;
return *this;
};
void Add(record<type> tmp) {
int l = Search_number(tmp.Getname());
if (l == -1 && !is_full())
mem[count++] = tmp;
else
mem[l] = tmp;
};
void Add(string name, type value) {
record<type> tmp(name, value);
this->Add(tmp);
/*int l = Search_number(tmp.Getname());
if (l == -1 && !is_full()) mem[count++] = tmp;
else mem[l] = tmp;*/
}
void Dell(string _name) {
int i = Search_number(_name);
//åñëè óïîðÿäî÷åí
/*for (size_t j = i; j < count-1 ; j++)
mem[j] = mem[j + 1];*/
mem[i] = mem[--count];
};
type Search_value(string _name) {
int i = Search_number(_name);
if (i != -1)
return mem[i].Getvalue();
return -1;
};
int Search_number(string _name) {
int i = 0, c = count;
while (c && mem[i].Getname() != _name){ i++;c--;}
if (c) return (i);
return -1;
};
int Getcount() { return count; };
bool is_empty() { return (count == 0); };
bool is_full() { return (count == size); };
record<type> Getrecord(int index) { return mem[index]; };
~table() { delete[] mem; };
};