Guest User

CTable class

a guest
Dec 20th, 2016
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <string>
  4. #include <iostream>
  5. #include <list>
  6. #include <algorithm>
  7. #include "stdafx.h"
  8.  
  9. using namespace std;
  10.  
  11. #define DEFAULT_NAME "DEFAULT"
  12. #define DEFAULT_SIZE 10
  13.  
  14. template <typename T>
  15. class CTable
  16. {
  17. private:
  18. int n_tableSize;
  19. string s_name;
  20. T* table;
  21.  
  22. void InitializeAndZeroFillTable()
  23. {
  24. table = new T[DEFAULT_SIZE];
  25. n_tableSize = DEFAULT_SIZE;
  26. for (int i = 0; i < n_tableSize; i++)
  27. {
  28. table[i] = 0;
  29. }
  30. }
  31.  
  32. public:
  33.  
  34. CTable<T>()
  35. {
  36. InitializeAndZeroFillTable();
  37. s_name = DEFAULT_NAME;
  38. cout << "bezp: " + s_name << endl;
  39. }
  40.  
  41. CTable<T>(string s_newName)
  42. {
  43. InitializeAndZeroFillTable();
  44. s_name = s_newName;
  45. cout << "parametr: " + s_name << endl;
  46. }
  47.  
  48. CTable<T>(T* values, string s_newName, int n_size)
  49. {
  50. if (n_size > 0)
  51. InitializeAndZeroFillTable();
  52. s_name = s_newName;
  53. for (int i = 0; i < n_size; i++)
  54. {
  55. table[i] = values[i];
  56. }
  57. }
  58.  
  59. CTable<T>(const CTable<T>& source)
  60. {
  61. s_name = source.s_name + "_copy";
  62. InitializeAndZeroFillTable();
  63. CopyTable(source.table, table, n_tableSize);
  64. cout << "kopiuj: " + s_name << endl;
  65. }
  66.  
  67. void SetName(string s_newName)
  68. {
  69. s_name = s_newName;
  70. }
  71.  
  72. bool AssignValueByIndex(T n_value, int n_position)
  73. {
  74. if (n_position >= n_tableSize) return false;
  75. table[n_position] = n_value;
  76. return true;
  77. }
  78.  
  79. void AssignTableValuesFrom(CTable<T> source)
  80. {
  81. ChangeTableSize(source.n_tableSize);
  82. CopyTable(source.table, table, source.n_tableSize);
  83. }
  84.  
  85. static void CopyTable(T* source, T* destination, int n_size)
  86. {
  87. for (int i = 0; i < n_size; i++)
  88. {
  89. destination[i] = source[i];
  90. }
  91. }
  92.  
  93. int GetTableSize()
  94. {
  95. return n_tableSize;
  96. }
  97.  
  98. string ToString()
  99. {
  100. string result = s_name + " len: " + to_string(n_tableSize) + " values: ";
  101. for (int i = 0; i < n_tableSize; i++)
  102. {
  103. result += to_string(table[i]) + ", ";
  104. }
  105. return result;
  106. }
  107.  
  108. void ChangeTableSize(int n_newSize)
  109. {
  110. int* tempTable = new int[n_newSize];
  111. for (int i = 0; i < n_newSize; i++)
  112. {
  113. if (i < n_tableSize) tempTable[i] = table[i];
  114. else tempTable[i] = 0;
  115. }
  116. n_tableSize = n_newSize;
  117. }
  118.  
  119. T ReadValue(int n_position)
  120. {
  121. return table[n_position];
  122. }
  123.  
  124. ~CTable()
  125. {
  126. cout << "usuwam: " + s_name << endl;
  127. delete table;
  128. }
  129. };
Advertisement
Add Comment
Please, Sign In to add comment