Как получить доступ к каждому элементу вектора <Mat>x, чтобы получить максимальное и минимальное значение - PullRequest
0 голосов
/ 08 мая 2020

Я хочу получить каждый элемент в этом: вектор x, чтобы я мог сравнить каждый элемент, чтобы получить максимальное и минимальное значение в каждом мате в этом векторе. Я пытаюсь сделать это, но получаю исключение в: if (max <= refG [i] .at (j, k)) </p>

int max_Val(vector<Mat> refG)
            {
        refG.reserve(m);
                int max = 0;
                for (int i = 0; i < m; i++)
                {
                    for (int j = 0; j < n; j++)
                    {
                        for (int k = 0; k < s; k++)
                        {
                            if (max <= refG[i].at<int>(j,k))
                            {
                                max = refG[i].at<int>(j,k);
                            }
                        }
                    }
                }
                return max;
            }

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Альтернативный способ найти MAX и MIN в векторе: * max_element (first_index, last_index); * min_element (first_index, last_index);

EX: вектор a = {1, 45, 54, 71, 76, 12};

// Print the vector 
cout << "Vector: "; 
for (int i = 0; i < a.size(); i++) 
    cout << a[i] << " "; 
cout << endl; 

// Find the max element 
cout << "\nMax Element = "
     << *max_element(a.begin(), a.end());  // Max = 76
0 голосов
/ 08 мая 2020

Инициализируйте max и min для первого элемента вектора, а затем с помощью al oop вы можете получить доступ ко всем другим элементам и сравнить их с max и min. Что-то вроде

max = min = x[0];
for (int i = 1; i < x.size(); ++i) {
   if (x[i] < min) min = x[i];
   else if (x[i] > max) max = x[i];
}
...