W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
我們要編寫的下一個函數(shù)是find,它的作用是在紙牌向量中查找指定的牌。這個函數(shù)的用途可能不是那么明顯,但是我們可以利用它來演示兩種查找方法,即線性查找和二分查找。
線性查找是比較直觀的一個;它包括遍歷牌堆并拿每張牌和我們要找的牌進行比較。如果找到了,返回紙牌出現(xiàn)位置的索引;沒找到則返回-1。
int find (const Card& card, const apvector<Card>& deck) {
for (int i = 0; i < deck.length(); i++) {
if (equals (deck[i], card)) return i;
}
return -1;
}
這里的循環(huán)與printDeck中的循環(huán)完全一致。實際上,這段代碼是從printDeck中復制而來的,這就避免了編寫和調(diào)試兩次。
在循環(huán)內(nèi)部,我們將牌堆中的每個元素都與指定的紙牌進行比較。一旦找到,函數(shù)就立即返回,也就是說,如果找到指定的牌,那就不需要遍歷整個牌堆。如果循環(huán)結(jié)束時還沒有找到,我們就可以確定牌堆中沒有指定的牌,最后返回-1。
我們使用下面代碼來測試該函數(shù):
apvector<Card> deck = buildDeck ();
int index = card.find (deck[17]);
cout << "I found the card at index = " << index << endl;
這段代碼的輸出是:
I found the card at index = 17
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: