Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ConsoleApplication1.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- template<typename T>
- T minimum(T a, T b)
- {
- return a < b ? a : b;
- }
- template<>
- const char* minimum(const char* a, const char* b)
- {
- return strcmp(a, b) < 0 ? a : b;
- }
- template<typename T>
- class MyArray
- {
- private:
- int m_iSize;
- T *m_array;
- public:
- MyArray();
- MyArray(const MyArray<T> &a);
- ~MyArray();
- T &operator[](int index);
- MyArray &operator=(const MyArray<T> &a);
- inline int GetSize(){ return m_iSize; }
- };
- template<typename T>
- MyArray<T>::MyArray()
- :m_iSize(1)
- {
- m_array = new T[1];
- m_array[0] = T();
- }
- template<typename T>
- MyArray<T>::~MyArray()
- {
- delete[]m_array;
- }
- template<typename T>
- MyArray<T>::MyArray(const MyArray<T> &a)
- {
- m_iSize = a.m_iSize;
- m_array = new T[m_iSize];
- for(int i = 0; i < m_iSize; ++i)m_array[i] = a.m_array[i];
- }
- template<typename T>
- T &MyArray<T>::operator [](int index)
- {
- if (index < 0) index = 0;
- if (index >= m_iSize)
- {
- T *tmp = new T[index + 1];
- for (int i = 0; i < m_iSize; ++i) tmp[i] = m_array[i];
- for (int i = m_iSize; i <= index; ++i)tmp[i] = T();
- delete[] m_array;
- m_array = tmp;
- m_iSize = index+1;
- }
- }
- template<typename T>
- MyArray<T> &MyArray<T>::operator=(const MyArray<T> &a)
- {
- if (&a != this)
- {
- delete[] m_array;
- m_iSize = a.m_iSize;
- m_array = new T[m_iSize];
- for (int i = 0; i < m_iSize; ++i) m_array[i] = a.m_array[i];
- }
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- std::cout << minimum(2,4 ) << std::endl;
- std::cout << minimum(2.6,4.6 ) << std::endl;
- std::cout << minimum<double>(2.5, 4) << std::endl;
- std::cout << minimum('c', 'b') << std::endl;
- std::cout << minimum("csasaalla", "bella") << std::endl;
- MyArray<int> a;
- std::cout << a.GetSize() << std::endl;
- a[5]
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement