如何有效地找到给定矢量集合中每列的最小值?查找给定矢量的最小值
例如,请考虑下面的程序:
#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之间的最小元素的数量。如果我可以循环使用类似的函数来找到最小值,它会不会足够有效?我并不是说它可以做或不做。这只是一个可以改进的想法,但我不知道如何。
如果您关心的是效率问题,则应考虑按列而不是按行存储表。 – chrisaycock 2011-02-18 22:07:02