C++ 一次遍歷的方案

2023-03-20 16:02 更新

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

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

apvector<int> histogram (upperBound, 0);

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)