C++ 一次遍歷的方案

2023-03-20 16:02 更新

雖然上面的函數(shù)可以完成指定工作,但是它的效率比較低。每一次調(diào)用howMany函數(shù)時它都要將整個數(shù)據(jù)內(nèi)容遍歷一次。在下面的程序中,我們需要將數(shù)據(jù)遍歷十次。

我們要設計一個函數(shù),使其將數(shù)據(jù)遍歷一邊就能完成工作。對數(shù)據(jù)中的每一個值,我們可以將其對應的計數(shù)存儲點找出,并將其自增一。換句話說,我們使用向量中的值作為直方圖的下標。下面是對應方法設計的程序:

apvector<int> histogram (upperBound, 0);

for (int i = 0; i<numValues; i++) {
    int index = vector[i];
    histogram[index]++;
}

第一行對統(tǒng)計值進行初始化直方圖的值為0。通過這樣,我們就可以在循環(huán)體里通過++操作符進行對直方圖增長。我們知道我們讓它會從0開始。而忘記初始化計數(shù)器是一個常見的錯誤。

作為一練習,可以將以上的代碼封裝設計好,組合成一histogram函數(shù),輸入一個向量并統(tǒng)計值范圍(這里是0到10),返回值就是向量中的統(tǒng)計直方圖。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號