Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- template <typename T>
- T* createArr(int size)
- {
- return new T[size];
- }
- template <typename T>
- void deleteArr(T* ptr)
- {
- delete[] ptr;
- }
- template <typename T>
- void printArr(const T* begin, const T* const end)
- {
- while (begin != end)
- {
- std::cout << *begin++ << ' ';
- }
- std::cout << '\n';
- }
- template <typename T>
- void fillArr(T* begin, const T* const end, int start, int stop)
- {
- while (begin != end)
- {
- *begin++ = (rand() % (stop - start) + start);
- }
- }
- template <typename T>
- void fillArr(T* begin, const T* const end, T val, bool incremental = false)
- {
- while (begin != end)
- {
- *begin++ = val;
- val += incremental;
- }
- }
- template <typename T>
- void addElementTo(T*& begin, int& size, int idx, T val = 0)
- {
- T* newArr{ new T[size + 1] };
- for (int copyPos{0}; copyPos < size; ++copyPos)
- {
- *(newArr + copyPos + (copyPos >= idx)) = *(begin + copyPos);
- }
- *(newArr + idx) = val;
- delete[] begin;
- begin = newArr;
- ++size;
- }
- template <typename T>
- void addElementToEnd(T*& begin, int& size, T val = 0)
- {
- addElementTo(begin, size, size, val);
- }
- template <typename T>
- void deleteElementFrom(T*& begin, int& size, int idx)
- {
- T* newArr{ new T[--size] };
- for (int copyPos{ 0 }; copyPos < size; ++copyPos)
- {
- *(newArr + copyPos) = *(begin + copyPos + (copyPos >= idx));
- }
- delete[] begin;
- begin = newArr;
- }
- template <typename T>
- void deleteElementFromEnd(T*& begin, int& size)
- {
- deleteElementFrom(begin, size, size);
- }
- int main()
- {
- int arr1Size{ 10 };
- auto arr1{ createArr<int>(arr1Size) };
- fillArr(arr1, arr1 + arr1Size, 0, true);
- printArr(arr1, arr1 + arr1Size);
- addElementTo(arr1, arr1Size, arr1Size / 2, 33);
- printArr(arr1, arr1 + arr1Size);
- deleteElementFrom(arr1, arr1Size, arr1Size / 2);
- printArr(arr1, arr1 + arr1Size);
- addElementToEnd(arr1, arr1Size, 42);
- printArr(arr1, arr1 + arr1Size);
- deleteElementFromEnd(arr1, arr1Size);
- printArr(arr1, arr1 + arr1Size);
- deleteArr(arr1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement