strict-flower

hoge.cpp

Apr 14th, 2022
1,251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. template <class T>
  5. concept LikeArray = requires (T&& arr) {
  6.   arr[0];
  7.   std::size(arr);
  8.   std::begin(arr);
  9.   std::end(arr);
  10. };
  11.  
  12. template <class T> requires LikeArray<T>
  13. void reverse(T& arr) {
  14.   const int N = std::size(arr);
  15.   for (int i = 0; i < N / 2; i++) {
  16.     std::swap(arr[i], arr[N - i - 1]);
  17.   }
  18. }
  19.  
  20. template<class T> requires LikeArray<T>
  21. void print_array(const T& arr){
  22.   for (auto it = std::begin(arr); it < std::end(arr); it++) {
  23.     std::cout << *it << std::endl;
  24.   }
  25. }
  26.  
  27. int main(int ac, char **av) {
  28.   std::vector<int> vec {1, 2, 3};
  29.   reverse(vec);
  30.   print_array(vec);
  31.  
  32.   std::cout << std::endl << "=====" << std::endl << std::endl;
  33.  
  34.   int array[] = {1, 2, 3, 4, 5, 6};
  35.   reverse(array);
  36.   print_array(array);
  37. }
Advertisement
Add Comment
Please, Sign In to add comment