我试图用一个矢量阵列向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;
}
}
答案 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,它的成本并不比通过引用传递更多。让我们不要试图比编译器更聪明。