00
02 #include <iostream>
03 #include <string>
04 #include <vector>
05 #include <tuple>
06 void vector_min_max(const std::vector<double>& vec,
11 double& min, int& min_index, double& max, int& max_index)
12 {
13 max = vec[0];
14 min = vec[0];
15 min_index = 0;
16 max_index = 0;
17
18 for(auto i = 0; i < vec.size(); ++i)
19 {
20 if (vec[i] > max)
21 {
22 max = vec[i];
23 max_index = i;
24 }
25 if (vec[i] < min)
26 {
27 min = vec[i];
28 min_index = i;
29 }
30 }
31 }auto vector_min_max(const std::vector<double>& vec)
36 {
37 auto max = vec[0];
38 auto min = vec[0];
39 auto min_index = 0;
40 auto max_index = 0;
41
42 vector_min_max(vec, min, min_index, max, max_index);
44 return std::make_tuple(min, min_index, max, max_index);
45 }
46
47 int main ()
48 {
49 using namespace std;
50
51 vector<double> v{1.1, -3.5, 7, 9, 0, -0.5};
52 double mi, ma;
53 int i_mi, i_ma;
54
55 vector_min_max(v, mi, i_mi, ma, i_ma);
56
57 cout << "Min: " << mi << " at: " << i_mi << endl;
58 cout << "Max: " << ma << " at: " << i_ma << endl;
59
60 auto [mn, i_mn, mx, i_mx] = vector_min_max(v);
62 cout << "Min: " << mn << " at: " << i_mn << endl;
63 cout << "Max: " << mx << " at: " << i_mx << endl;
64 }
65