如何有效地找到給定矢量集合中每列的最小值?查找給定矢量的最小值
例如,請考慮下面的程序:
#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