valenki13

my_lib.h

Nov 8th, 2023
579
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <iostream>
  4.  
  5. template<class Type>
  6. int dsize(Type* a) {
  7.     if (a)
  8.         return _msize(a) / sizeof(Type);
  9.     else
  10.         return 0;
  11. }
  12.  
  13. template<class Type>
  14. void show_arr(int sz, Type* arr, char ch = ' ') {
  15.     for (int k = 0; k < sz; ++k)
  16.         std::cout << arr[k] << ch;
  17.     std::cout << std::endl;
  18. }
  19.  
  20. template <class Type>
  21. bool append(Type*& arr, Type val) {
  22.     if (arr) {
  23.         auto buff = new Type[dsize(arr) + 1];
  24.         for (int k = 0; k < dsize(arr); ++k)
  25.             buff[k] = arr[k];
  26.         buff[dsize(arr)] = val;
  27.         delete[] arr;
  28.         arr = buff;
  29.         return true;
  30.     }
  31.     else {
  32.         return false;
  33.     }
  34. }
  35.  
  36. template<class Type>
  37. bool insert(Type*& arr, int id, Type val) {
  38.     if (arr && dsize(arr) > id) {
  39.         auto buff = new Type[dsize(arr) + 1];
  40.         for (int k = 0; k < id; ++k)
  41.             buff[k] = arr[k];
  42.         buff[id] = val;
  43.         for (int k = id; k < dsize(arr); k++)
  44.             buff[k + 1] = arr[k];
  45.         //show_arr(dsize(buff), buff);
  46.         delete[] arr;
  47.         arr = buff;
  48.         return true;
  49.     }
  50.     else {
  51.         return false;
  52.     }
  53. }
  54.  
  55. template<class Type>
  56. void myswap(Type& a, Type& b) {
  57.     Type t = a;
  58.     a = b;
  59.     b = t;
  60. }
  61.  
  62. template<class Type>
  63. void shuffle(Type* arr) {
  64.     int sz = dsize(arr);
  65.     for (int k = 0; k < 100; k++)
  66.         myswap(arr[rand() % sz],
  67.             arr[rand() % sz]
  68.         );
  69. }
Advertisement
Add Comment
Please, Sign In to add comment