2016-11-19 3 views
0

Я пытаюсь разрешить 13 карт для 4 игроков с векторным массивом, а затем показать руки. Но я изо всех сил пытаюсь понять, как делать карты. Я знаю, что мне нужно использовать поп и толкнуть колоду, чтобы разобраться с картами, но я не могу заставить ничего работать. Любые идеи были бы полезны. Я попробовал это до сих пор,C++ Deal and Show колода карт с вектором

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; 

    } 

} 

ответ

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 переменная должна быть пустой при запуске, так что a out параметр, а не ввод/вывод paraemter) В настоящее время компиляторы с использованием return value optimization, это не так дорого, как передача по ссылке. Давайте не будем стараться быть умнее компилятора.

Смежные вопросы