99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

C++ 子牌堆

2023-03-20 16:24 更新

我們應(yīng)該如何表示一手牌或者一副牌的某個(gè)子集呢?很容易的選擇就是創(chuàng)建一個(gè)少于52張紙牌的Deck對象。

我們可能需要一個(gè)subdeck函數(shù),它以一個(gè)紙牌向量和索引的區(qū)間為參數(shù),返回值是一個(gè)新的向量,其中包括了牌堆中指定的子集:

Deck Deck::subdeck (int low, int high) const {
  Deck sub (high-low+1); 

  for (int i = 0; i<sub.cards.length(); i++) {
    sub.cards[i] = cards[low+i];
  }
  return sub;
}

我們使用Deck的構(gòu)造函數(shù)創(chuàng)建局部變量subdeck(譯者注:參考代碼,這里應(yīng)該是sub,下同),其參數(shù)為牌堆大小,這里沒有對其中的紙牌進(jìn)行初始化,其初始化是通過復(fù)制原始牌堆中的紙牌完成的。

subdeck的長度是high-low+1,因?yàn)閰^(qū)間下界和上界的牌都包括在其中。這個(gè)計(jì)算雖然簡短但還是容易讓人迷惑,進(jìn)而導(dǎo)致“差一錯(cuò)誤”。要避免這種錯(cuò)誤,最好通過畫圖來輔助理解。

作為練習(xí),請編寫另一個(gè)版本的findBisect函數(shù),它以一個(gè)子牌堆為參數(shù),而不是以一個(gè)牌堆和索引區(qū)間為參數(shù)。哪個(gè)版本更容易出錯(cuò)?你認(rèn)為哪個(gè)版本會(huì)更高效?

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號