2013-04-09 2 views
0

Итак, я пытаюсь сделать симулятор колоды карт на C++, и мне было интересно, что я должен использовать, вектор или массив? Я знаю разные способности каждого, я просто не знаю, что я должен использовать, чтобы сделать сплоченный опыт. Причина, по которой я нуждаюсь в этом, - это то, что я делаю текстовую игру, и у меня будет мини-игра в покер.Vector vs. Array for Deck of Cards

+0

A (двухсторонняя) очередь. –

+0

deck -> 'deque' ;-) Опыт конечного пользователя не зависит от выбора, однако ваша простота в реализации. –

+0

Какие операции необходимо выполнять на палубе? – juanchopanza

ответ

0

В C++ выбор по умолчанию должен быть либо vector, либо deque всякий раз, когда вы смотрите на «Мне нужно сохранить несколько вещей». Использование простого массива не выгодно, если только оно не является критическим.

Конечно, вам понадобятся несколько коллекций, таких как рука игрока (ов), используемые карты, карты не используются.

Использование стандартного класса контейнера (std::vector или std::deque) у вас есть то преимущество, что вам не нужно отдельно «сколько карт делает игрок X есть», вы можете использовать player[x] .hand.size(), чтобы определить, что. (Игроки, конечно же, также являются коллекционным классом!)

+0

Массивы также должны использоваться, когда память ограничена, а фрагментация нежелательна, например встроенные системы. –

+0

Если это долговечная коллекция, и вы используете 'reserve' для того, чтобы размер вектора начинался с [и никогда не расти], нет никакой проблемы с фрагментацией как таковой. Я бы сказал, что накладные расходы одного указателя потребуют огромного количества векторов. –