2012-11-18 21 views
0

我有向量的數字 std ::向量數字; 如何查找像參數一樣傳遞的最大序號? 例如,如果我有像0,1,1,3,2,0,0,0,6,0,0 ,我期待爲號我需要開始指數這個案例。 是否已有一些功能或組合在stlboost中實現此問題? (我不能使用C + + 11)如何查找像參數一樣傳遞的最大序號?

回答

1

我不覺得有什麼,這是否對你的標準功能,但你可以設定它一個相對簡單的算法:

int max_len = -1; 
int best_index = -1; 
int count = 0; 
vector<int> data; 
int value; 
// Set the data and value here... 
for (int i = 0 ; i != data.size() ; i++) { 
    if (data[i] == value) { 
     count++; 
    } else { 
     if (count > max_len) { 
      best_index = i - count; 
      max_len = count; 
     } 
     count = 0; 
    } 
} 
if (count > max_len) { 
    best_index = i - count; 
    max_len = count; 
} 
1

我不認爲你會做的比在每個成員迭代的向量中運行的強力計數更好。

1

這是真的有必要使用lib函數嗎?

一個簡單的方法 - 我沒有看到任何更有效的手段 - 將選擇第一個數字並計數,只要它出現在序列中。

如果出現另一個數字,直到出現另一個數字爲止,然後比較最後一個數字與剛計數的數字的頻率,並始終保持頻率最高的頻率,然後執行此操作直至達到最終數字的列表 - 或者直到你可以肯定,鑑於列表的大小和你在列表中的位置,沒有一個數字可能會更頻繁,按照一個序列,而不是你最常見的那個。

相關問題