76 T min (T a, T b) |
76 T min (T a, T b) |
77 { |
77 { |
78 return (a < b) ? a : b; |
78 return (a < b) ? a : b; |
79 } |
79 } |
80 |
80 |
|
81 template<typename ContainerType> |
|
82 typename ContainerType::value_type min(const ContainerType& container) |
|
83 { |
|
84 typename ContainerType::value_type result; |
|
85 |
|
86 for (typename ContainerType::value_type element : container) |
|
87 result = min(result, element); |
|
88 |
|
89 return result; |
|
90 } |
|
91 |
81 template<typename T> |
92 template<typename T> |
82 T max (T a, T b) |
93 T max (T a, T b) |
83 { |
94 { |
84 return (a > b) ? a : b; |
95 return (a > b) ? a : b; |
|
96 } |
|
97 |
|
98 template<typename ContainerType> |
|
99 typename ContainerType::value_type max(const ContainerType& container) |
|
100 { |
|
101 typename ContainerType::value_type result; |
|
102 |
|
103 for (typename ContainerType::value_type element : container) |
|
104 result = max(result, element); |
|
105 |
|
106 return result; |
85 } |
107 } |
86 |
108 |
87 template<typename T> |
109 template<typename T> |
88 T clamp (T a, T b, T c) |
110 T clamp (T a, T b, T c) |
89 { |
111 { |