Какой способ выражения карты является более эффективным?Целое число, структура или класс? - PullRequest
0 голосов
/ 03 декабря 2018

Для операций, критичных к производительности, есть ли разница в выражении карты в виде целого числа / перечисления, структуры или класса?

целое число:

0 => Spade King
1 => Spade Queen
2 => Spade Jack 
. 
. 
. 
51 => Club Two

структура:

 Struct Card
 {
      Suit GivenSuit;
      Rank GivenRank;

      Some functions... 
 }`

Класс:

 Class Card
 {
      Card();

      Suit GivenSuit;
      Rank GivenRank;

      Some functions... 
 }

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Если карточки были определены как целые числа в вызывающем классе, это может быть немного более эффективным в отношении времени доступа, чем доступ к классу вне вызывающего класса.

Но это может быть микроОптимизация вашего решения и компромисс между функциональностью и эффективностью с точки зрения наносекундсоблюдение принципов ООП дизайна для использования класса Card.Использование целых чисел сделает ваш класс многоразовым и хрупким.

0 голосов
/ 03 декабря 2018

Как насчет enum и пары.

enum CardsValues {
  Ace = 1,2,3,4,5,6,8,9
  Jack = 10,
  Queen,
  King,
}

enum CardColour {
 Spade, ...
}
std::pair<CardValue, CardColour> theCard;
...