C ++处理和展示一副卡片与矢量

时间:2016-11-19 22:11:06

标签: c++ arrays vector

我试图用一个矢量阵列向4名玩家发放13张牌,然后向他们展示。但我正在努力弄清楚如何处理这些卡片。我知道我必须使用pop并在牌组中进行处理,但我无法获得任何工作。任何想法都会有所帮助。到目前为止我试过这个,

void deal(vector<int> deck, int card[][cards], int players) {
    for (int i = 0; i < players; i++) {
        cout << "Player " << i + 1 << ": ";
        for (int k = 0; k < cards; k++) {
            deck.push_back(cards);
        }
        cout << endl;

    }

}

1 个答案:

答案 0 :(得分:4)

虽然这似乎有效

void deal(vector<int> deck, int card[][cards], int players) {

您只是更新传递参数的副本。退出函数后,调用者的更改将丢失。

我建议这样做:通过引用传递:

void deal(vector<int> &deck, int card[][cards], int players) {

甚至是这样:

vector<int> deal(int card[][cards], int players) {
   vector<int> deck;
   ...
   return deck;

更优雅(因为您的deck变量在开始时应该为空,因此它是 out 参数,而不是 in / out paraemter) 现在编译器使用https://plnkr.co/edit/vaoCzUJZBf31wtLNJ5f5?p=preview,它的成本并不比通过引用传递更多。让我们不要试图比编译器更聪明。