Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- template <typename T>
- void printArr(T* arr, int arrSize)
- {
- for (int i{ 0 }; i < arrSize; ++i)
- {
- std::cout << arr[i] << '\t';
- }
- std::cout << '\n';
- }
- template <typename T>
- void printArr(T** container, int ySize, int xSize)
- {
- for (int y{ 0 }; y < ySize; ++y)
- {
- printArr(container[y], xSize);
- }
- std::cout << '\n';
- }
- template <typename T>
- void fillArr(T** container, int ySize, int xSize)
- {
- int cnt{ 1 };
- for (int y{ 0 }; y < ySize; ++y)
- {
- for (int x{ 0 }; x < xSize; ++x)
- {
- container[y][x] = cnt++;
- }
- }
- }
- template <typename T>
- void sliceBigArr(T** container, T* bigArr, int ySize, int xSize)
- {
- for (int y{ 0 }; y < ySize; ++y)
- {
- container[y] = bigArr + xSize * y;
- };
- }
- template <typename T>
- T** createArr2DLinear(int ySize, int xSize)
- {
- T** container{ new T * [ySize] };
- T* bigArr{ new T[ySize * xSize] };
- sliceBigArr(container, bigArr, ySize, xSize);
- return container;
- }
- template <typename T>
- void deleteArr2DLinear(T** container)
- {
- delete[] *container;
- delete[] container;
- }
- int main()
- {
- int ySize{ 3 };
- int xSize{ 3 };
- auto arr2D{ createArr2DLinear<int>(ySize,xSize) };
- fillArr(arr2D, xSize, ySize);
- printArr(arr2D, ySize, xSize);
- deleteColumnArr2DLinear(arr2D, ySize, xSize, 2);
- printArr(arr2D, ySize, xSize);
- auto newCol{ new int[ySize] {1,2,3} };
- addColumnArr2DLinear(arr2D, ySize, xSize, 0, newCol);
- printArr(arr2D, ySize, xSize);
- deleteRowArr2DLinear(arr2D, ySize, xSize, 2);
- printArr(arr2D, ySize, xSize);
- auto newRow{ new int[xSize] {1,2,3} };
- addRowArr2DLinear(arr2D, ySize, xSize, 2, newRow);
- printArr(arr2D, ySize, xSize);
- deleteArr2DLinear(arr2D);
- delete[] newCol;
- delete[] newRow;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement