2014-02-16 65 views
0

我有一個非常小的問題,但我無法在網上找到任何覆蓋它的東西。 我需要在存儲最小值的1D數組中找到索引。 到目前爲止我發現的一切都只告訴你最小值的值。 代碼我做出了嘗試用是:找到存儲最小值的元素

int min_element_loc (double a[]){ 
double first, last; 
first = a[0]; 
last = a[255]; 
for(int i = 0;i<256;i++) 
{ 
    if (first==last) return i; 
    double smallest = first; 
     while (++first!=last) 
      smallest=first; 
     return i; 
} 
return 0; 
} 

(數組中有256個元素:我知道它的混亂,但它永遠不會改變,並且該程序不在最終的版本)

感謝

+0

你的意思是你需要得到最小值的索引嗎? – SMK

+0

是的,我是傻子 – Sizza

+0

你的代碼有點太大的錯誤來向你展示如何在代碼片段中,但你這樣做的方式是存儲'i',就像你存儲'最小'。 –

回答

3

使用算法頭中的std :: min_element。

#include <vector> 
#include <algorithm> 
#include <iostream> 

int main() { 

    std::vector<double> vals = { 1.0, 2.0, 0.5, 4.2 }; 

    auto iter = std::min_element(vals.begin(), vals.end()); 
    auto idx = iter - vals.begin(); 

    std::cout << idx << "\n"; 

    return 0; 
} 
+0

這工作,但是,我需要將我的數組添加到一個向量。我不知道該怎麼做。編輯,我查了一下,謝謝:) – Sizza

+0

未來參考:'std :: vector vals; double a [256]; (int i = 0; i <256; i ++) {[i] = i + 1; } vals.insert(vals.begin(),a,a + 256); (int i = 0; i <256; i ++) { cout << vals [i] << endl; }' – Sizza

+0

@Sizza *「我需要將我的數組添加到矢量中。」*不,你不知道。只要這樣做:'std :: min_element(a,a + 256);'。但是,我也強烈建議你在* entire *程序中使用'std :: vector'而不是C風格的數組;你可以使用'double a [256]'和朋友輕鬆地進行堆棧損壞。 – Ali