Как эффективно найти наименьшее значение каждого столбца в данном наборе векторов?
Например, рассмотрим следующую программу:
#include <iostream>
#include <vector>
#include <iterator>
#include <cstdlib>
using namespace std;
typedef vector<double> v_t;
int main(){
v_t v1,v2,v3;
for (int i = 1; i<10; i++){
v1.push_back(rand()%10);
v2.push_back(rand()%10);
v3.push_back(rand()%10);
}
copy(v1.begin(), v1.end(), ostream_iterator<double>(cout, " "));
cout << endl;
copy(v2.begin(), v2.end(), ostream_iterator<double>(cout, " "));
cout << endl;
copy(v3.begin(), v3.end(), ostream_iterator<double>(cout, " "));
cout << endl;
}
Пусть результат будет
3 5 6 1 0 6 2 8 2
6 3 2 2 9 0 6 7 0
7 5 9 7 3 6 1 9 2
В этой программе я хочу найти наименьшее значение каждого столбца (из 3-х заданных векторов) и поместить его в вектор. В этой программе я хочу определить вектор v_t vfinal
, который будет иметь значения:
3 3 2 1 0 0 1 7 0
Есть ли эффективный способ сделать это? Я упоминаю «эффективный», потому что моя программа может найти наименьшие значения среди очень большого числа векторов. Спасибо.
Обновление:
Я пытаюсь использовать что-то подобное, что я использовал в одной из моих предыдущих программ
int count = std::inner_product(A, A+5, B, 0, std::plus<int>(), std::less<int>());
Это подсчитывает количество минимальных элементов между двумя массивами A и B. Разве это не было бы достаточно эффективно, если бы я мог выполнить цикл и использовать подобный тип функции для поиска минимальных значений? Я не утверждаю, что это может быть сделано или нет. Это просто идея, которую можно улучшить, но я не знаю как.