C++ 查找

2023-03-20 16:24 更新

我們要編寫的下一個函數(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 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號