fork download
  1. #include <iostream>
  2. #include <cstddef>
  3. #include <array>
  4. #include <vector>
  5. #include <algorithm>
  6. using namespace std;
  7.  
  8. template <typename T> T max1(const T *arr, const std::size_t size)
  9. {
  10. T maxValue = arr[0];
  11. for (size_t i = 1; i < size; ++i)
  12. if (arr[i] > maxValue)
  13. maxValue = arr[i];
  14. return maxValue;
  15. }
  16.  
  17. template <typename T> T max2(const T *first, const T *last)
  18. {
  19. T maxValue = *first;
  20. ++first;
  21. for (; first != last; ++first)
  22. if (*first > maxValue)
  23. maxValue = *first;
  24. return maxValue;
  25. }
  26.  
  27. template <typename T, std::size_t size> T max3(const T (&arr)[size])
  28. {
  29. T maxValue = arr[0];
  30. for (size_t i = 1; i < size; ++i)
  31. if (arr[i] > maxValue)
  32. maxValue = arr[i];
  33. return maxValue;
  34. }
  35.  
  36. template <typename T> T max4(T first, T last)
  37. {
  38. if (first == last)
  39. return last;
  40.  
  41. T maxIt = first;
  42. ++first;
  43. for (; first != last; ++first)
  44. if (*first > *maxIt)
  45. maxIt = first;
  46. return maxIt;
  47. }
  48.  
  49. int main()
  50. {
  51. {
  52. const size_t SIZE = 5;
  53. int arr1[SIZE] = {1, 2, 3, 4, 5};
  54. cout << max1(arr1, SIZE) << endl;
  55. }
  56.  
  57. {
  58. const size_t SIZE = 5;
  59. double arr2[SIZE] = {1, 2, 3, 4, 5};
  60. cout << max2(arr2, arr2 + SIZE) << endl;
  61. }
  62.  
  63. {
  64. const size_t SIZE = 5;
  65. double arr3[SIZE] = {1, 2, 3, 4, 5};
  66. cout << max3(arr3) << endl;
  67. }
  68.  
  69. {
  70. array<int, 5> arr4 = {1, 2, 3, 4, 5};
  71. cout << *max4(arr4.begin(), arr4.end()) << endl;
  72. }
  73.  
  74. {
  75. vector<double> arr5 = {1, 2, 3, 4, 5};
  76. cout << *max_element(arr5.begin(), arr5.end()) << endl;
  77. }
  78.  
  79. return 0;
  80. }
Success #stdin #stdout 0s 4172KB
stdin
Standard input is empty
stdout
5
5
5
5
5