2013-02-28 92 views
0

我模擬了10個模具卷並將其存儲在一個名爲data的矢量中。我需要按順序排列這10個數字,或者讓我的程序知道每個模具有多少面。一位朋友建議我使用一個數組,通過10個數字步進,並根據哪個模面添加一個數字到六列中的一列,但我不確定如何做到這一點。如何計算矢量中每個值的出現頻率?

void Game::sort_hands() 
{ 
    vector<int> data; 
    for(int i = 0; i < player.hand.size(); ++i){ 
     data.push_back(player.hand[i]); 
     data.push_back(opponent.oppHand[i]);   
    } 

    for(int i = 0; i < data.size(); ++i){ 
     cout<<data[i]<<" "; 
    } 
} 
+1

我認爲你的朋友有一個好的和直接的想法,這將在O(n)時間執行,這是完美的。讓他/她更好地向你解釋,因爲他們看起來在正確的軌道上。 – 2013-02-28 17:23:02

+0

聽起來像你的朋友有一個奇妙的想法。比使用排序例程要好得多。 – RobCurr 2013-02-28 18:06:12

+0

這絕對是一個初學者的問題。我建議你自己做研究,而不是問(不應該花太長時間)。但是你的朋友絕對是在正確的軌道上。你已經有了迭代的代碼想你的向量(for循環),你只需要檢查增加這個面的計數器的值。因爲我知道答案,所以我很樂意給你代碼,但是我相信你可以自己解決這個問題,如果你創建一個數組並且使用存儲值來確定數組中計數器的索引增加。 – 2013-02-28 20:27:05

回答

-1

那麼,如果你正在尋找的人給你解答你的功課,我會說這是針對錯誤的地方,但我們可以爲您指出正確的方向。有許多常見和易於實現的排序算法,但請注意,考慮到數據集的大小,與許多排序算法相關的開銷可能不值得。研究算法,以及瞭解您使用的數據結構的功能,即std :: vector。