Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <string>
- #include <iostream>
- #include <list>
- #include <algorithm>
- #include "stdafx.h"
- using namespace std;
- #define DEFAULT_NAME "DEFAULT"
- #define DEFAULT_SIZE 10
- template <typename T>
- class CTable
- {
- private:
- int n_tableSize;
- string s_name;
- T* table;
- void InitializeAndZeroFillTable()
- {
- table = new T[DEFAULT_SIZE];
- n_tableSize = DEFAULT_SIZE;
- for (int i = 0; i < n_tableSize; i++)
- {
- table[i] = 0;
- }
- }
- public:
- CTable<T>()
- {
- InitializeAndZeroFillTable();
- s_name = DEFAULT_NAME;
- cout << "bezp: " + s_name << endl;
- }
- CTable<T>(string s_newName)
- {
- InitializeAndZeroFillTable();
- s_name = s_newName;
- cout << "parametr: " + s_name << endl;
- }
- CTable<T>(T* values, string s_newName, int n_size)
- {
- if (n_size > 0)
- InitializeAndZeroFillTable();
- s_name = s_newName;
- for (int i = 0; i < n_size; i++)
- {
- table[i] = values[i];
- }
- }
- CTable<T>(const CTable<T>& source)
- {
- s_name = source.s_name + "_copy";
- InitializeAndZeroFillTable();
- CopyTable(source.table, table, n_tableSize);
- cout << "kopiuj: " + s_name << endl;
- }
- void SetName(string s_newName)
- {
- s_name = s_newName;
- }
- bool AssignValueByIndex(T n_value, int n_position)
- {
- if (n_position >= n_tableSize) return false;
- table[n_position] = n_value;
- return true;
- }
- void AssignTableValuesFrom(CTable<T> source)
- {
- ChangeTableSize(source.n_tableSize);
- CopyTable(source.table, table, source.n_tableSize);
- }
- static void CopyTable(T* source, T* destination, int n_size)
- {
- for (int i = 0; i < n_size; i++)
- {
- destination[i] = source[i];
- }
- }
- int GetTableSize()
- {
- return n_tableSize;
- }
- string ToString()
- {
- string result = s_name + " len: " + to_string(n_tableSize) + " values: ";
- for (int i = 0; i < n_tableSize; i++)
- {
- result += to_string(table[i]) + ", ";
- }
- return result;
- }
- void ChangeTableSize(int n_newSize)
- {
- int* tempTable = new int[n_newSize];
- for (int i = 0; i < n_newSize; i++)
- {
- if (i < n_tableSize) tempTable[i] = table[i];
- else tempTable[i] = 0;
- }
- n_tableSize = n_newSize;
- }
- T ReadValue(int n_position)
- {
- return table[n_position];
- }
- ~CTable()
- {
- cout << "usuwam: " + s_name << endl;
- delete table;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment